Android手游转电视游戏之模拟操控

安卓TV开发(前言)— AndroidTV模拟器初识与搭建 目前市场已经有很多巨头企业涉足物联网和智能家居领域,包括小米,乐视,华为等已经相继进军,并以开发出相应的产品。乐视智能电视,小米手环,手表,电视盒子,华为智能路由器,这些设备是怎么运行是其原理,也就是安卓+嵌入式+网络通讯,接下来介绍下模拟器搭建。 阅读详情

本文来自http://blog.youkuaiyun.com/hellogv/ ,引用必须注明出处!

     智能电视终端(智能电视和智能电视盒子)越来越火,过去主打视频功能,预计今年的智能电视终端不仅继续完善视频功能,还会加入电视游戏功能,同时这也赶上了“电视游戏机解禁”的时机。

     大部分Android手游能够在Android系统的电视终端上运行,其中有少数手游是原生支持手柄(例如MOGA手柄),这部分游戏可以作为电视游戏。但其他手游(射击,赛车,动作等游戏)若要在电视上玩,就需要修改操控模式,把触摸屏操控改为手柄实体键操控。

     本文主要讲解的是如何使用/system/bin/之下的Input命令模拟按键和触摸屏操作,调用Input命令需要具备root权限。本文代码可以到http://download.youkuaiyun.com/detail/hellogv/6927571下载,程序运行结果如下:

 

本文核心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();
        }
    }

当贝Claw跨界娱乐终端:掌机、电视盒子与投屏器的融合创新 在智能硬件领域,SoC(系统级芯片)作为核心计算单元,其架构与性能直接决定了设备的综合能力。通过集成CPU、GPU、NPU等模块,SoC实现了高效的数据处理与图形渲染,为多功能设备提供了硬件基础。这一技术价值在于,它使得单一硬件平台能够通过软件定义,灵活适配不同应用场景,从而降低开发成本并提升用户体验。具体到娱乐终端,强大的SoC能够同时支撑本地游戏运行、4K视频解码以及多任务处理,这正是实现设备融合的关键。例如,在安卓掌机与电视盒子的跨界产品中,高性能SoC确保了从掌上游戏到大屏观影的无缝切换。应用场景由 阅读详情

相关推荐

Unity手游开发实战:FPS+RPG+生存融合玩法与安卓手柄适配详解

在移动游戏领域,第一人称射击(FPS)游戏因其强烈的沉浸感和紧张刺激的对抗性,一直占据着重要地位。然而,对于许多追求更精准操控和主机级体验的玩家来说,触屏操作的局限性始终是个痛点。近期,一款名为《太阳天堂的钥匙》的安卓手游进入了我们的视野,它不仅在v0.9.9版本中正式加入了对物理手柄的支持,更将硬核的末日生存题材与深度的RPG元素融合进FPS框架中,为玩家带来了别具一格的复合型游戏体验。本文将深入解析这款游戏的核心玩法、手柄适配的实现原理,并探讨其在当前手游市场中的独特定位,为开发者提供融合多类型游戏元素

weixin_31179927的博客 286

只需一款软件就能让电视秒变成电脑

神马,智能电视居然可以秒变成电脑。这个世界真是太复杂了,吓死本宝宝了。 不是小编在吹牛,确实是这样的。现在的年轻人都是离不开电脑的,但是如果电脑突然出现突发情况的话。用起来就不方便了有木有。 那么这个时候问题来了,该如何解决呢?卤煮这里有一招,可以让电视秒变电脑。当然需要用到一款神器,才能实现。 让我们先来看看变身成电脑的电视是什么样子的。 1.可使用各种PC环境下的应

u012463418的专栏 5187

Android开发自定义游戏摇杆键盘

Android开发之自定义View实现的游戏摇杆键盘,类似于王者荣耀遥感效果,游标跟随,方向判定,计算等等

[cocos2dx]如何将Android手机游戏移植到电视?

最近智能电视非常火,我也买了一个小米电视,看片效果不错,网络也还算给力。但是,玩游戏比较蛋疼,要用遥控器,下了一个捕鱼达人试玩了一把,要用方向键控制大炮的方向和远近,再用确定键发射炮弹,根本没法玩。。。这个问题的原因在于,手机游戏都是为触摸屏设计的,移植到电视的大屏幕上,没有触摸屏了,要改用遥控器或者手柄操作,就要改变游戏的玩法,不但移植复杂,而且最致命的是,会大大降低游戏的乐趣。那有没有办法在电

u012973744的专栏 2348

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 283

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。

YiYeZhiNian的博客 2043

Android设备模拟屏幕点击滑动(需系统权限)

提示:Android系统APP实现设备模拟操控,需要系统签名例如:Android系统APP需要实现设备模拟点击滑动等,可以使用到设备命令进行实现,也可以adb命令模拟效果。本文主要对android设备的模拟点击和滑动进行了总结,仅供参考,以上,欢迎大家踊跃交流!

weixin_47368640的博客 2516

PaddleOCR 与 PaddleX 调试

本文介绍了PaddleOCR与PaddleX的安装调试过程及应用对比。首先详细说明了环境准备步骤,包括安装ccache、设置环境变量及创建conda虚拟环境,提供了精简安装和源码安装两种方式。接着展示了使用PaddleOCR进行发票和手写汉字识别的测试结果,指出部分手写识别存在误差。随后对比了两者的差异:PaddleOCR专注于OCR算法优化,PaddleX则提供全流程工具链和标准化部署方案。最后演示了如何通过PaddleX部署OCR服务,包括API启动方法和客户端调用示例,为开发者提供了两种不同场景下的O

weixin_42176639的博客 1452

Android TV 悬浮球模拟物理按键

最近在体验实习的时候做了一个TV的内存管家,其中有个要求是实现一个悬浮球,模拟TV控制器的按键,实现上下左右,back,menu,home等效果,并且做一个火箭升空的效果。这时候才发现网上有关tv开发的资料十分少,不像手机端,一搜堆博客。so 就讲讲其实现

to_perfect的博客 2845

用matlab编程求矩阵的极大无关组,向量组极大无关组表示问题

已知向量组T:Eqn11.gif (3.16 KB, 下载次数: 1)2013-10-21 19:19 上传.(1) 求向量组T的秩,并判断向量组T的相关性;(2) 求T的极大线性无关组;(3) 将其余的向量用所求的极大线性无关组线性表示。程序:>> A=[1 1 3 2;-1 1 -1 3;5-2 8 9;-1 3 1 7]>> r=rank(A)>> A1=...

weixin_35094083的博客 7384

Arduino创意作品实战案例:手把手教你做温控风扇

通过这个实用的arduino创意作品,轻松实现温度感应与风扇自动控制,结合传感器与编程逻辑,打造智能散热系统,是入门者理想的arduino创意作品实践项目。

weixin_42311427的博客 608

手柄映射键盘_如何使用运动加加TAP手柄在PC上玩手游

运动加加TAP手柄,不仅仅是一款体感手柄,同时也是一款多功能的通用游戏手柄,支持智能电视、电视盒子,手机、PC等各种平台。运动加加TAP手柄可以一键切换为标准游戏手柄,在标准游戏手柄模式下,左手触摸板自动识别为游戏手柄的左手摇杆,而右手柄则会同时开启飞鼠功能(飞鼠:指用体感数据控制鼠标指针)。因此一套运动加加TAP手柄,等于是一个无线游戏手柄+一个无线鼠标。这一独特功能设计,特别适合在PC上使用安...

weixin_39778582的博客 3015

飞牛NAS 0day漏洞导致断网?完整的排查修复方案来了(含一键检测修复工具)

家里网络莫名断网,折腾十来天才发现是NAS被0day漏洞利用了?🔍 本文详细记录了从发现问题到最终解决的全过程,包括如何自查系统是否被入侵、使用检测脚本和专杀脚本进行修复,以及如何通过端口管理、访问控制、监控预警等措施加固系统安全 🔒,帮助遇到同样问题的用户快速排查和解决NAS安全风险 ✅

XiaoqiangClub的博客 5511

xbox360无线手柄接收器驱动_如何使用运动加加TAP手柄在PC上玩手游

运动加加TAP手柄,不仅仅是一款体感手柄,同时也是一款多功能的通用游戏手柄,支持智能电视、电视盒子,手机、PC等各种平台。运动加加TAP手柄可以一键切换为标准游戏手柄,在标准游戏手柄模式下,左手触摸板自动识别为游戏手柄的左手摇杆,而右手柄则会同时开启飞鼠功能(飞鼠:指用体感数据控制鼠标指针)。因此一套运动加加TAP手柄,等于是一个无线游戏手柄+一个无线鼠标。这一独特功能设计,特别适合在PC上使用安...

weixin_39662834的博客 1658

AUTOSAR知识点 之 XCP (二):XCP基础概念

学习XCP的过程中,对XCP的基本概念要做一个全面的认知,因为里面有很多缩写以及难以理解的点,假设对此模模糊糊一知半解,那么对整个协议栈的认知会遇到极大的障碍。XCP的信号流传输图示如下XCP 标准主要分为 5 个部分:这部分提供了对于协议的一个概况介绍,包括 XCP 的功能和基础性内容。这部分内容对协议层进行了详细的规范和说明。

梦想技术家 2769

ISOLAR Autosar BSW 配置 之 Com

Autosar ISOLAR Bsw Configuration 之 Com

qq_42262743的博客 452

Android开发者必备工具-常见Android模拟器(MuMu、夜神、蓝叠(2)

夜神模拟器进行了全面的优化,无论是游戏还是应用,用起来都会更稳定、更流畅。除此之外更有超凡的端游操作体验,让你快人一步。键鼠操控一键应用云端键盘,即刻享受端游般的游戏体验。使用键盘鼠标,操作快人一步。极致多开打开多个模拟器,每个模拟器可独立运行游戏。更有多开同步,轻松实现多账号。操作助手记录下你的复杂操作,下次执行时只需轻轻一点, 即可解放双手。

2401_84023579的博客 9655

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

介绍几款最好使用的模拟器怎么下载。

桔子模拟器助手是一个网页专业介绍模拟器使用方法,玩什么游戏该使用什么样的模拟器。 网页类支持各种模拟器下载,以及很多手游攻略,教你玩转手游模拟器。 浏览器搜索可以找到桔子模拟器助手 桔子模拟器助手网页:www.jzpai.cn 了解跟多请上桔子模拟器助手网页版 【桔子模拟器助手资讯】 雷电模拟器 雷电安卓模拟器支持手柄使用,而且对手游的按键增加了连击和旋转视角的按键,以实现一键连点和3D手...

weixin_44189384的博客 1645

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android开发者必备工具-常见Android模拟器(MuMu、夜神、蓝叠

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。贵在坚持!一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2401_84023579的博客 4345

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

电视游戏大厅现状:“渠道为王”遭遇水土不服

2014-11-20 07:36:47共21664阅读来源:电科技作者:张志昌 对于以智能电视和智能BOX为平台的电视游戏发展状况,目前行业的关注点还是主要停留在硬件设施的创新层面上。事实上,想要真正引爆这一新兴产业,没有一款甚至几款足够吸引玩家的游戏内容,一切都将是妄谈。 目前的电视游戏行业情况是,游戏内容极度缺乏新意,但游戏大厅却像雨后春笋般冒出。受手游行业大爆发影响,看到

Jingle的专栏 2407

GoReleaser macOS 应用公证(Notarization)实战指南:跨平台 Quill 与原生双方案

macOS 对分发的应用要求经过 Apple 签名与公证(Notarization),否则用户在 Gatekeeper 下会看到“无法验证开发者”的警告。本文以 GoReleaser 官方文档 [notarize.md](https://link.gitcode.com/i/99afa2e1e924c493d06939248e778674) 为核心骨架,结合仓库中 [公证管道实现](https:/

gitblog_00335的博客 386

电脑端的mafsvr服务关掉_想在电脑上玩手游,你得试试这款 "同屏助手" 了...

手机/电脑「多屏协同」相信大家都很熟悉啦,之前雷锋哥也陆续推荐过「华为」「戴尔」等协同软件,但这些都是提高办公效率为主。有些小伙伴想用电脑投屏玩手机游戏,支持键位映射功能,后面雷锋哥也有给大家推荐过「虫洞」软件支持类似的游戏功能,但是要收费的。可能你会问为什么电脑上不用安卓模拟器玩?因为某些游戏会检测到你用模拟器,然后账号就GG。所以今天雷锋哥给小伙伴们分享一款支持键鼠操控手游的「多屏协...

weixin_30150003的博客 629

安卓设备互相投屏_一键电视投屏

一键电视投屏app是一款专业、简单、实用的多平台投屏软件,一键电视投屏软件不仅拥有简洁直观的操作界面,而且一键电视投屏app支持多平台设备互相连接投屏。【一键电视投屏软件介绍】一键电视投屏app是一款简单实用的手机投屏APP,一键电视投屏软件实现了手机投屏到电视大屏幕的功能,一键电视投屏app操作简便,性能流畅。【一键电视投屏软件优势】【本地资源投屏】:支持视频、音乐、图片各种手机本地资源投屏到电...

weixin_39683858的博客 697

终极指南:15个隐藏功能打造完美Moonlight安卓游戏串流体验

想要将你的Android设备变成便携式游戏主机吗?Moonlight安卓端阿西西修改版正是你需要的解决方案。这款基于官方Moonlight开发的开源游戏串流客户端,通过NVIDIA GameStream或Sunshine服务,将Windows电脑上的游戏库无线传输到手机或平板,支持自定义虚拟按键、分辨率调节、多种鼠标模式等增强功能,让你随时随地享受高清游戏体验🎮 ## 🚀 快速上手:5分钟完

gitblog_00237的博客 3171

手机投屏电脑怎么做不卡顿?QtScrcpy 从安装到键鼠操控一次讲透

翻手机找资料、低头回消息、开会演示找不到转接头——这些被"小屏幕"耽误的时刻,每天都在悄悄偷走你的效率。如果你正想找一款能把安卓手机画面实时搬到电脑上、还能用鼠标键盘反向操控的免费工具,那 QtScrcpy 就是今天的主角:无需 root、覆盖三大系统,一条数据线(或同一个 WiFi)就能把手机"搬"上桌面。 ## 先从一个最笨的投屏方式说起 很多人第一次接触"手机投屏电脑",用的是手机支架加

gitblog_00512的博客 734
上一篇: Android MediaPlayer与Http Proxy结合之优化篇
下一篇: Android BLE开发之Android手机与BLE终端通信
欧巴Godwin
欧巴Godwin 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 9690粉丝 141原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值