我的应用程序中有一个活动和一个服务组件。
目的是让服务负责准备需要表面持有者的SurfaceView
和媒体播放器实例。我的媒体是视频文件。
是否可以在我的服务中创建表面视图?
我可以拨打以下内容
surface = (MySurfaceView) findViewById(R.id.surface);
在我的服务组件中?
如果我这样做,我可以将surface.getHolder
分配给玩家实例的setDisplay()
。
总体目标是从活动中发出命令(播放,停止,搜索等),让服务实现对媒体播放器状态的控制。
我可能会将所有内容都放在我的活动中,但是当我旋转设备时,我不想拆掉表面并在onConfigurationChanged()
中重新创建它。因此,请考虑在此处使用该服务。
高度赞赏任何想法或解决方案。
感谢。
答案 0 :(得分:1)
您可以使用AsyncTask
实施而不是服务,并执行
doInBackground
方法(不同
线程,不会打扰用户
接口),而onPostExecute
方法(UI
线程)。 <强>更新强>
由于您需要在后台线程中播放媒体(不会被gui进程中断),Service
可能是您的选择。您还需要一个Activity
来启动,停止和控制您的服务。
有关如何实现此设计,您可以查看此MusicDroid Tutorial part 2。
虽然,并非强制要求使用服务来完成这项任务,但@ CommonsWare的解决方案非常优雅和方便。
@CommonsWare's streaming video test application,此Audio/Video player sample不使用服务。
答案 1 :(得分:0)
如果您想从Service
开始和停止Activity
,请尝试使用in this example application所述的方法。它对我有用。
演示可能是downloaded。您需要this music file。