安卓TV开发(九) Android模拟事件 遥控器变身成鼠标来操作TV

本文介绍了如何在Android TV开发中将遥控器转换为鼠标进行操作。通过自定义鼠标视图、鼠标控制器,并在当前页面加入鼠标,利用Instrumentation发送模拟的触摸事件,实现了遥控器的鼠标功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     本文出处:http://blog.csdn.net/sk719887916/article/details/40348853,作者:skay
     接触TV的的开发,操作体验是我们开发者必须要关注的,因此,遥控器做鼠标成了智能设备的开发主流不可缺少的一部分,今天给大家带来怎样实现遥控操作模拟鼠标的功能,觉得ok的请到下方自觉的点个赞。有自动化测试框架也有用此方式实现的。
   实现功能: 遥控器方向键控制鼠标箭头移动
                       遥控器可以操作模拟鼠标进行点击操作。
  效果图:

    实现之前先做个大致分析,记得之前我在一篇安卓实现高仿Ios桌面的博客中就接触过类似此需求的功能,第一眼大家觉得可拖动gridview和实现遥控器拖动鼠标有啥关系,仔细一分析,其实异曲同工,可拖动的gridView我们是用手指进行item移动的,而这次的模拟鼠标我们可以把它想成一个item(只不过展现的UI为一个鼠标箭头的图片),用遥控器进行控制的,当然我们无需拖动,用遥控方向键来控制item的位移即可。至于遥控器点击OK键进行点击执行点击操作的事件,我们可以获取模拟鼠标在屏幕中的绝对坐标,然后模拟一个此处的点击事件即可。

      一 自定义鼠标视图

        用于展现鼠标的具体视图,MouseView 继承 FrameLayout ,之后漂浮在控制的activity上,只要由WindowManage控制此视图的展现和移动。
public MouseView(Context context) {
		super(context);
	}
	
	public MouseView(Context context, MouseManager mMouseMrg) {
		super(context);
		init( mMouseMrg);
	}
	
	public OnMouseListener getOnMouseListener() {
		return mOnMouseListener;
	}

	public void setOnMouseListener(OnMouseListener mOnMouseListener) {
		this.mOnMouseListener = mOnMouseListener;
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
		if (mMouseView != null && mMouseBitmap != null) {
			mMouseView.measure(MeasureSpec.makeMeasureSpec(mMouseBitmap.getWidth(), MeasureSpec.EXACTLY), 
					MeasureSpec.makeMeasureSpec(mMouseBitmap.getHeight(), MeasureSpec.EXACTLY));
		}
	}
	
	private void init(MouseManager manager) {
		mMouseManager  = manager;
		Drawable drawable =	getResources().getDrawable(
				R.drawable.shubiao);
		mMouseBitmap = drawableToBitamp(drawable);
		mMouseView = new ImageView(getContext());
		mMouseView.setImageBitmap(mMouseBitmap);
		addView(mMouseView, new LayoutP
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值