亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android提高之手游轉電視游戲的模擬操控

2020-04-11 11:45:34
字體:
來源:轉載
供稿:網友

目前智能電視終端(智能電視和智能電視盒子)已經越來越火,過去主打視頻功能,如今的智能電視終端不僅會繼續完善視頻功能,還會加入電視游戲功能,同時這也趕上了“電視游戲機解禁”的時機。

當今的大部分Android手游都能夠在Android系統的電視終端上運行,其中有少數手游是原生支持手柄(例如MOGA手柄),這部分游戲可以作為電視游戲。但其他手游(射擊,賽車,動作等游戲)若要在電視上玩,就需要修改操控模式,把觸摸屏操控改為手柄實體鍵操控。

本文主要講解的是如何使用/system/bin/之下的Input命令模擬按鍵和觸摸屏操作,調用Input命令需要具備root權限。本文完整代碼點擊此處本站下載

程序運行結果如下圖所示:

 

本文核心RootCommand.java的代碼如下,不建議把代碼濃縮成全局靜態方法,這里保持process和os這2個變量的生命周期直到app結束,可以減去多次初始化/釋放的耗時。具體代碼如下:

package com.hellogv.slinput;import java.io.DataOutputStream;import java.io.IOException;import android.util.Log;/** * 調用su執行input命令 * 全局只調用一次init()和exit(),多次調用run()。 * @author hellogv * */public class RootCommand { private String TAG="RootCommand"; private Process process = null; private DataOutputStream os = null; public void init() { try {  process = Runtime.getRuntime().exec("su");  os = new DataOutputStream(process.getOutputStream()); } catch (IOException e) {  Log.e(TAG, getExceptionMessage(e)); } } /** * 模仿shell來執行命令,必須先root再使用 *  * @param command * @return */ public boolean run(String command) { try {  os.writeBytes(command + "/n");  os.flush(); } catch (Exception e) {  Log.e(TAG, getExceptionMessage(e));  return false; } return true; } /** * 模仿shell來執行命令,必須先root再使用 *  * @param command * @return */ public void release() { try {  os.writeBytes("exit/n");  os.flush();  process.waitFor(); } catch (Exception e) {  Log.e(TAG, getExceptionMessage(e)); } finally {  try {  if (os != null) {   os.close();  }  process.destroy();  } catch (Exception e) {  } } } private static String getExceptionMessage(Exception ex){ String result=""; StackTraceElement[] stes = ex.getStackTrace(); for(int i=0;i<stes.length;i++){  result=result+stes[i].getClassName()   + "." + stes[i].getMethodName()   + " " + stes[i].getLineNumber() +"line"  +"/r/n"; } return result; }}

調用RootCommand的代碼如下,input命令的使用格式詳見代碼:

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rootCommand.init();//模擬按下Home鍵btnTestKey = (Button) this.findViewById(R.id.btnTestKey);btnTestKey.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //命令格式:input keyevent keycode rootCommand.run("/system/bin/input keyevent "+KeyEvent.KEYCODE_HOME); }});//模擬滑動觸摸屏btnTestSwipe= (Button) this.findViewById(R.id.btnTestSwipe);btnTestSwipe.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { int x2 = MainActivity.this.getWindow().getDecorView().getWidth() - 10; //先去到桌面 rootCommand.run("/system/bin/input keyevent "+KeyEvent.KEYCODE_HOME); //滑動桌面,命令格式:input swipe x1 y1 x2 y2 for(int i=0;i<4;i++){  rootCommand.run("/system/bin/input swipe 10 300 "+x2+" 400");  rootCommand.run("/system/bin/input swipe "+x2+" 300 10 400"); } }});//模擬點擊觸摸屏btnTestTap= (Button) this.findViewById(R.id.btnTestTap);btnTestTap.setOnClickListener( new OnClickListener(){ @Override public void onClick(View v) {  int[] location = new int[2];  btnTestSwipe.getLocationOnScreen(location);  int x = location[0]+btnTestSwipe.getWidth()/2;  int y = location[1]+btnTestSwipe.getHeight()/2; //模擬點擊btnTestTap  rootCommand.run("/system/bin/input tap "+x+" "+y); }});//退出程序btnExit = (Button) this.findViewById(R.id.btnExit);btnExit.setOnClickListener( new OnClickListener(){ @Override public void onClick(View v) { rootCommand.release(); MainActivity.this.finish(); }});//判斷是否root過,沒root過不可用if(RootTools.isRootAvailable()==false){ Toast.makeText(this, "本程序需要使用ROOT權限。", Toast.LENGTH_SHORT).show(); this.finish();}}

感興趣的朋友可以下載本實例的完整代碼加以調試運行,相信會對大家的Android程序設計有很大的幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.精品av.com| 国产一区二区三区在线视频| 伊人久久久久久久久久| 欧美激情免费视频| 欧美另类69精品久久久久9999| 一区二区三区视频免费| 美女久久久久久久久久久| 中文字幕一区二区三区电影| 亚洲视频综合网| 91精品国产精品| 欧美性视频精品| 久久久伊人欧美| 日韩在线观看成人| 欧美噜噜久久久xxx| 成人激情av在线| 在线播放日韩专区| 456亚洲影院| 亚洲国产又黄又爽女人高潮的| 日本国产欧美一区二区三区| 国产精品影片在线观看| 欧美成年人网站| 国产午夜精品全部视频在线播放| 日韩av中文字幕在线免费观看| 欧美一区三区三区高中清蜜桃| 精品无人区乱码1区2区3区在线| 久久精品福利视频| 国产极品jizzhd欧美| 久久精品国产亚洲| 日韩精品亚洲视频| 欲色天天网综合久久| 久久久精品中文字幕| 欧美日韩国内自拍| 久久久国产一区二区三区| 国产成人免费av| 69久久夜色精品国产69乱青草| 91在线精品视频| 亚洲精品美女网站| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩成人黄色| 亚洲四色影视在线观看| 久久精品久久久久久国产 免费| 久久青草精品视频免费观看| 国产精品美女免费| 97人人做人人爱| www日韩中文字幕在线看| 久久成人亚洲精品| 日韩在线视频免费观看高清中文| 亚洲国产精品va在线观看黑人| 久久久久久这里只有精品| 亚洲电影免费在线观看| 日韩网站免费观看高清| 亚洲国产日韩一区| 91精品久久久久久久| 91久久久久久久久久| 日韩av电影在线播放| 日韩av不卡在线| 成人免费在线网址| 亚洲欧洲日本专区| 亚洲视频在线观看网站| 日韩欧美亚洲范冰冰与中字| 欧美日韩国产黄| 中文字幕精品影院| 大伊人狠狠躁夜夜躁av一区| 亚洲午夜国产成人av电影男同| 久久av红桃一区二区小说| 精品人伦一区二区三区蜜桃网站| 日韩中文综合网| 成人有码在线视频| 欧美激情亚洲国产| 日韩精品在线电影| 精品亚洲一区二区| 欧美精品生活片| 色婷婷成人综合| 亚洲天堂精品在线| 欧美成人免费观看| 久久久久999| 最好看的2019年中文视频| 狠狠躁天天躁日日躁欧美| 日韩在线观看av| 久操成人在线视频| 国产精品夜间视频香蕉| 欧美视频中文在线看| 欧美尺度大的性做爰视频| 精品久久久久久久中文字幕| 国产精品18久久久久久首页狼| 国产日韩在线看| 欧美另类99xxxxx| 国产午夜精品一区理论片飘花| 久久久久久国产精品美女| 中文字幕综合在线| 欧美成人精品在线| 久久久91精品国产| 亚洲精品国产电影| 91在线观看免费网站| 国产精品白嫩美女在线观看| 精品偷拍一区二区三区在线看| 久久香蕉频线观| 亚洲老头老太hd| yw.139尤物在线精品视频| 精品视频在线观看日韩| 午夜精品蜜臀一区二区三区免费| 欧美一区视频在线| 91精品视频在线免费观看| 国产91色在线|免| 久久在线免费视频| 国产日韩欧美在线观看| 国产精品视频中文字幕91| 国产亚洲精品高潮| 亚洲va欧美va国产综合久久| 日韩小视频在线| 日韩欧美亚洲范冰冰与中字| 亚洲欧美日韩网| 精品国产乱码久久久久久婷婷| 久久天天躁狠狠躁夜夜躁| 福利视频一区二区| 国产亚洲精品美女久久久| 日韩精品中文字幕在线播放| 日韩视频免费在线观看| 欧美日韩一区二区免费在线观看| 国产一区二区日韩精品欧美精品| 亚洲国产精品va在线| 亚洲精品美女免费| 国产精品99免视看9| 欧美另类极品videosbest最新版本| www.日韩.com| 久久久噜噜噜久噜久久| 日韩电影中文字幕在线| 欧美激情性做爰免费视频| 国产精品自产拍在线观看中文| 成人免费网站在线观看| 亚洲色图美腿丝袜| 538国产精品一区二区免费视频| 国内精品在线一区| 亚洲第一中文字幕在线观看| 在线视频一区二区| 中文字幕欧美精品在线| 欧美成人在线网站| 成人精品久久一区二区三区| 久久久亚洲影院| 欧美另类高清videos| 成人日韩av在线| 久久国产精品99国产精| 成人国产亚洲精品a区天堂华泰| 亚洲成人av片在线观看| 欧美性xxxx在线播放| 亚洲视频第一页| 国产精品久久久久久久久久久不卡| www.久久久久| 国产欧美亚洲视频| 成人福利免费观看| 亚洲最大的免费| 国产免费一区二区三区香蕉精| 美女视频黄免费的亚洲男人天堂| 国产精品色悠悠| 欧美日韩国产一区在线| 欧美激情一区二区三区久久久| 日韩欧美一区二区三区久久| 欧美成人剧情片在线观看| 亚洲色图五月天| 欧美一级淫片aaaaaaa视频| 成人性生交大片免费看小说| 久久综合久久八八| 色综合久久精品亚洲国产| 有码中文亚洲精品|