当前位置: 编程技术>移动开发
Android提高之手游转电视游戏的模拟操控
来源: 互联网 发布时间:2014-10-26
本文导语: 目前智能电视终端(智能电视和智能电视盒子)已经越来越火,过去主打视频功能,如今的智能电视终端不仅会继续完善视频功能,还会加入电视游戏功能,同时这也赶上了“电视游戏机解禁”的时机。 当今的大部分Android手游都...
目前智能电视终端(智能电视和智能电视盒子)已经越来越火,过去主打视频功能,如今的智能电视终端不仅会继续完善视频功能,还会加入电视游戏功能,同时这也赶上了“电视游戏机解禁”的时机。
当今的大部分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("exitn"); 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
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。