一种Home应用中直接操控各个播放应用的方法

文档序号:6639568阅读:140来源:国知局
一种Home应用中直接操控各个播放应用的方法
【专利摘要】本发明公开了一种Home应用中直接操控各个播放应用的方法,属于,本发明要解决如何避免产生ANR和维护广播队列的技术问题。技术方案为:Home应用和各个播放应用实现相同的aidl接口,界面layout在配置Service的时候以meta-data参数的形式保存且各个播放应用保存参数名字要统一,需要显示的数据可以是基本类型或者是实现了Parcel的对象;每种播放应用启动时都需要发送广播并把各自的包名作为附带数据;所有的播放应用中的Service 都需要过滤相同的Action。
【专利说明】—种Home应用中直接操控各个播放应用的方法

【技术领域】
[0001]本发明涉及一种Android系统的应用程序操控方法,具体地说是一种Home应用中直接操控各个播放应用的方法。

【背景技术】
[0002]随着Android系统的发展,越来越多的广品基于Android系统,包括机顶盒、手机、车机、平板电脑等各个领域,对于Android系统的要求也越来越严格,不仅要求系统稳定反应速度快,还需要更快捷方便的操作。Android原生系统对播放音乐做了一个widget(桌面组件),用来操作和控制播放器的暂停和播放以及上下曲目的切换,widget是通过广播来实现歌曲的播放和上下曲目的切换的,如果播放器应用未能在1s内处理完成就会产生ANR(Applicat1n Not Responding,应用程序无响应)问题,而且这种方式会有延迟且需要维护广播的消息队列,而且Android原生界面显示效果不好而且只有上下曲目和暂停播放功能,越来越不能满足现在用户的需求。目前越来越多的Home应用(按Home键后可进入应用程序界面的应用,称为Home应用)做的更酷更炫,设备也支持越来越多的应用,当从Home应用中找到一个应用然后到该应用界面去处理想要的操作,是一个繁杂的操作,给用户带来了极大的不方便,严重影响用户体验。Android系统只有在3.0以后的系统才能使用通知栏去管理播放暂停,但是管理播放暂停依然是通过广播去处理,而且在使用通知栏时还发现两个严重的问题:
1、当需要更新通知栏中歌手的图片时,不论从缓存ImageCache中去取还是通过异步任务去下载都必须重新发送通知更新,不能直接使用view.SetImageViewBitmap更新。
[0003]2、由于通知栏每次更新都是重新创建RemoteView对象,频繁更新通知栏会导致通知栏卡死。
[0004]Android原生的这些方法严重影响了用户体验和界面效果的优化,越来越不符合用户的需求。


【发明内容】

[0005]本发明的技术任务是针对以上不足之处,提供一种方便操作各个播放应用,避免产生ANR和维护广播队列的一种Home应用中直接操控各个播放应用的方法。
[0006]本发明解决其技术问题所采用的技术方案是:
一种Home应用中直接操控各个播放应用的方法,Home应用和各个播放应用实现相同的aidl接口,界面layout在配置Service的时候以meta-data参数的形式保存且各个播放应用保存参数名字要统一,需要显示的数据可以是基本类型或者是实现了 Parcel的对象;每种播放应用启动时都需要发送广播并把各自的包名作为附带数据;所有的播放应用中的Service都需要过滤相同的Act1n ;具体步骤为:
(I)、当Home应用启动完成,通过Act1n去查询Package Manager中的Service信息,并把查到符合要求Service和包名以及附带的界面布局ID保存到Map中,以包名为键值; (2)、当播放应用启动时,Home应用监听到播放播放启动的广播,并根据包名取出Map中的Service,并去启动和绑定该Service ;
(3)、Home应用根据播放应用的包名获取到播放应用的Applicat1nInfo ,通过Package Manager 的 get Resources For Applicat1n 方法获取管理资源的 Xml ResourceParser的对象,并通过该对象生成view对象,并把生成的view对象放到Home应用中特定的地方去显示;
(4)、通过View获取子view,并给子view重新设置ID,根据原来view的ID按照统一的方法去修改;
(5)、在Service 中编写 register On ClickListener (int resld),把界面中需要注册监听事件的view对象的ID,通过Binder的transact传给Home应用;
(6)、在Home应用中根据onTransact中读取到的ID,按照和view重设ID同样的方法去修改ID,并把该view通过Android的set On ClickListener注册监听;
(7)、当点击该事件的时候回调Service的onClick方法并将ID按照回复成传过来的ID值并传回去,在远程Service中根据View的ID去响应事件。
[0007]编写change View Background方法,用于改变view的背景图片,此方法中把需要改变背景图片的View的ID和需要改变的图片资源ID,通过Binder的transact传给Home应用,在Home应用中通过onTransact方法读取资源ID,并通过资源ID把特定view的背景修改成特定图片资源。
[0008]编写change View Text方法并重载该方法,该方法中把需要修改的view的ID和需要修改成的string的ID,通过Binder的transact传给Home应用,在重载方法中把需要修改的View的ID和修改成的字符串,直接通过Binder的transact传给Home应用,在Home应用中通过Binder的onTransact方法,获取到需要修改的View的ID和需要修改成的字符串的ID或者字符串,就实现了 Home应用中显示模块字符串的修改。
[0009]编写showPluginO和hidePluginO方法,用来显示和隐藏Home应用中应用的界面,调用该方法的Binder的transact传送一个int类型值给Home应用,Home应用中通过Binder的onTransact方法获取当前值来决定是否显示当前界面.编写set View Visibility方法,把需要显示和隐藏的View的ID通过Binder的transact传给Home应用,并把是否隐藏和显示的值(如View.GONE、View.VISIABLE)传过去,在Home应用中Binder的onTransact方法获取这个值,并给view设置是否显示,这样实现了特定控件的显示和隐藏。
[0010]编写invoke Method方法并重载该方法,用来调用自定义view中的不带参数的方法和带参数的方法,把自定义view的ID和方法名以及参数,通过Binder的transact传过去,在Home应用中根据资源ID和方法名以及参数,通过反射机制去调用该View的方法。
[0011]编写onClick方法,并根据Service回调传过来的ID值去处理响应的事件。
[0012]编写init方法,把应用中需要初始化的值和播放状态以及播放资源进行初始化,把界面中需要显示的数据传过去。
[0013]在IhomePlug.aidl 中定义如下方法:void onClick( in int id) ;voidresponse (in IBinder binder);通过onClick方法把当前点击事件View的ID返回回来,在IHomePlug.Stub中调用Service的onClick方法,来响应注册onClick事件监听的控件,Home应用中实现自己想要实现的事件。
[0014]Response方法中传一个Binder对象,这个binder对象用来数据的传递,把负责和远程service通信的类继承Binder,并实现onTransact,把该对象通过传给远程Service,负责数据的传送和通信。
[0015]本发明的一种Home应用中直接操控各个播放应用的方法和现有技术相比,具有以下优点:在Home应用中直接操作控制当前播放器,显示播放器播放歌曲曲目歌词信息艺术家等信息,也可以显示收音机频段和切换以及蓝牙音乐及拨号功能。

【专利附图】

【附图说明】
[0016]下面结合附图对本发明进一步说明。
[0017]附图1为一种Home应用中直接操控各个播放应用的方法的流程图。

【具体实施方式】
[0018]下面结合附图和具体实施例对本发明作进一步说明。
[0019]实施例1:
本发明的一种Home应用中直接操控各个播放应用的方法,Home应用和各个播放应用实现相同的aidl接口,界面layout在配置Service的时候以meta-data参数的形式保存且各个播放应用保存参数名字要统一,需要显示的数据可以是基本类型或者是实现了 Parcel的对象;每种播放应用启动时都需要发送广播并把各自的包名作为附带数据;所有的播放应用中的Service都需要过滤相同的Act1n ;具体步骤为:
(1)、当Home应用启动完成,通过Act1n去查询PackageManager中的Service信息,并把查到符合要求Service和包名以及附带的界面布局ID保存到Map中,以包名为键值;
(2)、当播放应用启动时,Home应用监听到播放播放启动的广播,并根据包名取出Map中的Service,并去启动和绑定该Service ;
(3)、Home应用根据播放应用的包名获取到播放应用的Applicat1nInfo ,通过Package Manager 的 get Resources For Applicat1n 方法获取管理资源的 Xml ResourceParser的对象,并通过该对象生成view对象,并把生成的view对象放到Home应用中特定的地方去显示;
(4)、通过View获取子view,并给子view重新设置ID,根据原来view的ID按照统一的方法去修改;
(5)、在Service 中编写 register On ClickListener (int resld),把界面中需要注册监听事件的view对象的ID,通过Binder的transact传给Home应用;
(6)、在Home应用中根据onTransact中读取到的ID,按照和view重设ID同样的方法去修改ID,并把该view通过Android的set On ClickListener注册监听;
(7)、当点击该事件的时候回调Service的onClick方法并将ID按照回复成传过来的ID值并传回去,在远程Service中根据View的ID去响应事件。
[0020]实施例2:
本发明的一种Home应用中直接操控各个播放应用的方法,Home应用和各个播放应用实现相同的aidl接口,界面layout在配置Service的时候以meta-data参数的形式保存且各个播放应用保存参数名字要统一,需要显示的数据可以是基本类型或者是实现了 Parcel的对象;每种播放应用启动时都需要发送广播并把各自的包名作为附带数据;所有的播放应用中的Service都需要过滤相同的Act1n ;具体步骤为:
(1)、当Home应用启动完成,通过Act1n去查询PackageManager中的Service信息,并把查到符合要求Service和包名以及附带的界面布局ID保存到Map中,以包名为键值;
(2)、当播放应用启动时,Home应用监听到播放播放启动的广播,并根据包名取出Map中的Service,并去启动和绑定该Service ;
(3)、Home应用根据播放应用的包名获取到播放应用的Applicat1nInfo ,通过Package Manager 的 get Resources For Applicat1n 方法获取管理资源的 Xml ResourceParser的对象,并通过该对象生成view对象,并把生成的view对象放到Home应用中特定的地方去显示;
(4)、通过View获取子view,并给子view重新设置ID,根据原来view的ID按照统一的方法去修改;
(5)、在Service 中编写 register On ClickListener (int resld),把界面中需要注册监听事件的view对象的ID,通过Binder的transact传给Home应用;
(6)、在Home应用中根据onTransact中读取到的ID,按照和view重设ID同样的方法去修改ID,并把该view通过Android的set On ClickListener注册监听;
(7)、当点击该事件的时候回调Service的onClick方法并将ID按照回复成传过来的ID值并传回去,在远程Service中根据View的ID去响应事件。
[0021]编写change View Background方法,用于改变view的背景图片,此方法中把需要改变背景图片的View的ID和需要改变的图片资源ID,通过Binder的transact传给Home应用,在Home应用中通过onTransact方法读取资源ID,并通过资源ID把特定view的背景修改成特定图片资源。
[0022]编写change View Text方法并重载该方法,该方法中把需要修改的view的ID和需要修改成的string的ID,通过Binder的transact传给Home应用,在重载方法中把需要修改的View的ID和修改成的字符串,直接通过Binder的transact传给Home应用,在Home应用中通过Binder的onTransact方法,获取到需要修改的View的ID和需要修改成的字符串的ID或者字符串,就实现了 Home应用中显示模块字符串的修改。
[0023]编写showPluginO和hidePluginO方法,用来显示和隐藏Home应用中应用的界面,调用该方法的Binder的transact传送一个int类型值给Home应用,Home应用中通过Binder的onTransact方法获取当前值来决定是否显示当前界面.编写set View Visibility方法,把需要显示和隐藏的View的ID通过Binder的transact传给Home应用,并把是否隐藏和显示的值(如View.GONE、View.VISIABLE)传过去,在Home应用中Binder的onTransact方法获取这个值,并给view设置是否显示,这样实现了特定控件的显示和隐藏。
[0024]编写invoke Method方法并重载该方法,用来调用自定义view中的不带参数的方法和带参数的方法,把自定义view的ID和方法名以及参数,通过Binder的transact传过去,在Home应用中根据资源ID和方法名以及参数,通过反射机制去调用该View的方法。
[0025]编写onClick方法,并根据Service回调传过来的ID值去处理响应的事件。
[0026]编写init方法,把应用中需要初始化的值和播放状态以及播放资源进行初始化,把界面中需要显示的数据传过去。
[0027]在IhomePlug.aidl 中定义如下方法:void onClick( in int id) ;voidresponse (in IBinder binder);通过onClick方法把当前点击事件View的ID返回回来,在IHomePlug.Stub中调用Service的onClick方法,来响应注册onClick事件监听的控件,Home应用中实现自己想要实现的事件。
[0028]Response方法中传一个Binder对象,这个binder对象用来数据的传递,把负责和远程service通信的类继承Binder,并实现onTransact,把该对象通过传给远程Service,负责数据的传送和通信。
[0029]上述【具体实施方式】仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述【具体实施方式】,任何符合本发明的一种Home应用中直接操控各个播放应用的方法的权利要求书的且任何所属【技术领域】的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
【权利要求】
1.一种Home应用中直接操控各个播放应用的方法,其特征在于Home应用和各个播放应用实现相同的aidl接口,界面layout在配置Service的时候以meta-data参数的形式保存且各个播放应用保存参数名字要统一,需要显示的数据可以是基本类型或者是实现了Parcel的对象;每种播放应用启动时都需要发送广播并把各自的包名作为附带数据;所有的播放应用中的Service都需要过滤相同的Act1n ;具体步骤为: (1)、当Home应用启动完成,通过Act1n去查询PackageManager中的Service信息,并把查到符合要求Service和包名以及附带的界面布局ID保存到Map中,以包名为键值; (2)、当播放应用启动时,Home应用监听到播放播放启动的广播,并根据包名取出Map中的Service,并去启动和绑定该Service ; (3)、Home应用根据播放应用的包名获取到播放应用的Applicat1nInfo ,通过Package Manager 的 get Resources For Applicat1n 方法获取管理资源的 Xml ResourceParser的对象,并通过该对象生成view对象,并把生成的view对象放到Home应用中特定的地方去显示; (4)、通过View获取子view,并给子view重新设置ID,根据原来view的ID按照统一的方法去修改; (5)、在Service中编写registerOn ClickListener,把界面中需要注册监听事件的view对象的ID,通过Binder的transact传给Home应用; (6)、在Home应用中根据onTransact中读取到的ID,按照和view重设ID同样的方法去修改ID,并把该view通过Android的set On ClickListener注册监听; (7)、当点击该事件的时候回调Service的onClick方法并将ID按照回复成传过来的ID值并传回去,在远程Service中根据View的ID去响应事件。
2.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写change View Background方法,用于改变view的背景图片,此方法中把需要改变背景图片的View的ID和需要改变的图片资源ID,通过Binder的transact传给Home应用,在Home应用中通过onTransact方法读取资源ID,并通过资源ID把特定view的背景修改成特定图片资源。
3.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写change View Text方法并重载该方法,该方法中把需要修改的view的ID和需要修改成的string的ID,通过Binder的transact传给Home应用,在重载方法中把需要修改的View的ID和修改成的字符串,直接通过Binder的transact传给Home应用,在Home应用中通过Binder的onTransact方法,获取到需要修改的View的ID和需要修改成的字符串的ID或者字符串,就实现了 Home应用中显示模块字符串的修改。
4.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写showPlugin和hidePlugin方法,用来显示和隐藏Home应用中应用的界面,调用该方法的Binder的transact传送一个int类型值给Home应用,Home应用中通过Binder的onTransact方法获取当前值来决定是否显示当前界面。
5.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写set View Visibility方法,把需要显示和隐藏的View的ID通过Binder的transact传给Home应用,并把是否隐藏和显示的值传过去,在Home应用中Binder的onTransact方法获取这个值,并给view设置是否显示,这样实现了特定控件的显示和隐藏。
6.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写invoke Method方法并重载该方法,用来调用自定义view中的不带参数的方法和带参数的方法,把自定义view的ID和方法名以及参数,通过Binder的transact传过去,在Home应用中根据资源ID和方法名以及参数,通过反射机制去调用该View的方法.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写onClick方法,并根据Service回调传过来的ID值去处理响应的事件。
7.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于编写init方法,把应用中需要初始化的值和播放状态以及播放资源进行初始化,把界面中需要显示的数据传过去。
8.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于在 IhomePlug.aidl 中定义如下方法:void onClick ;void response ;通过 onClick 方法把当前点击事件View的ID返回回来,在IHomePlug.Stub中调用Service的onClick方法,来响应注册onClick事件监听的控件,Home应用中实现自己想要实现的事件。
9.根据权利要求1所述的一种Home应用中直接操控各个播放应用的方法,其特征在于Response方法中传一个Binder对象,这个binder对象用来数据的传递,把负责和远程service通信的类继承Binder,并实现onTransact,把该对象通过传给远程Service,负责数据的传送和通信。
【文档编号】G06F9/44GK104461555SQ201410801272
【公开日】2015年3月25日 申请日期:2014年12月22日 优先权日:2014年12月22日
【发明者】丁志林 申请人:浪潮软件集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1