原理分析:当选择一个视频的时候,如果系统有多个播放器,此时会发一个隐式意图,匹配该隐式意图的播放器都能播放
可以参照系统是如何调起系统默认播放器的,在系统上层应用Gallery的AndroidManifest.xml中找到MovieView(系统默认播放器)这个activity
<activity android:name="com.android.camera.MovieView" android:label="@string/movieviewlabel" android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="rtsp" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="video/*" /> <data android:mimeType="application/sdp" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:mimeType="video/mp4" /> <data android:mimeType="video/3gp" /> <data android:mimeType="video/3gpp" /> <data android:mimeType="video/3gpp2" /> </intent-filter> </activity>
将所有的意图拷贝到自己的播放的activity的配置中
这样在系统发送隐私意图,打开选择界面activity的时候,我们的播放器也会出现在选择界面
下面的代码是系统调起所有的播放器
Intent intent = new Intent(); intent.setDataAndType(Uri.parse("视频播放地址"),"video/*"); context.startActivity(intent);
这样就能让我们的播放器播放视频了
