手机影音

来源:互联网 发布:网络流行语翻译2016 编辑:程序博客网 时间:2024/05/17 04:44

17.音乐播放器相关的开源介绍

1.频谱波形图,频谱柱状图,通知栏控制音乐,频谱效果................

 

18.网络音乐播放器,网络收音机

 1.网络音乐播放器

public class MainActivity extends Activity implements OnPreparedListener {private MediaPlayer mMediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v) {try {if (mMediaPlayer == null) {mMediaPlayer = new MediaPlayer();}mMediaPlayer.reset();//mMediaPlayer.setDataSource("http://192.168.1.100:8080/xpg.mp3");mMediaPlayer.setDataSource("mms://mediasrv2.iptv.xmg.com.cn/yinyue");mMediaPlayer.prepareAsync();//网络音乐.应该异步准备mMediaPlayer.setOnPreparedListener(this);} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void onPrepared(MediaPlayer mp) {//如果使用prepareAsync,应该把start()方法放到这个地方Toast.makeText(getApplicationContext(), "准备好了", 0).show();mMediaPlayer.start();}@Overrideprotected void onDestroy() {if (mMediaPlayer != null) {mMediaPlayer.release();mMediaPlayer = null;}super.onDestroy();}}


2.收音机

(1)FM:调频收音机-->频道-->频段
(2)网络收音机-->频道-->url
(3)使用的是mms串流媒体协议,android sdk不支持
(4)开源->FFMpeg支持-->开发周期长,开发难度大
(5)开放平台(第三方)-->api-->开发者

 

 

19.vitamio介绍

1.博客介绍:http://www.cnblogs.com/over140/archive/2012/04/26/2471060.html

   官网:http://www.yixia.com/

2.支持主流的视音频格式:mp3/mp4/mkv/avi/3gp/rmvb/mov/flv等

3. 支持功能

 (1)当然最重要的是播放功能,含播放控制(播放、暂停,声音、亮度调整等)

 (2)可以扫描SDcard,用列表展现出来,可以搜索

 (3)可以播放网络视音频(http、rtsp、mms)

4.Vitamio是一个支持所有Android设备的多媒体框架。Vitamio与Android默认的MediaPlayer工作方式相似,但包含更加强大的功能!(注意:Vitamio商业化后个人免费、公司收费)

 

 

20.videoview回忆,vitamiodemo运行查看

1.videoview:Android自带控件,多媒体播放器

2.videoview

(1)本地:支持3gp ,mp4,avi(支持播放出声音)
(2)网络:支持3gp ,mp4

3.videoview

public class MainActivity extends Activity implements OnPreparedListener, OnErrorListener, OnCompletionListener {private VideoView mVv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.实例化videoViewmVv = (VideoView) findViewById(R.id.vv);//设置相关的监听mVv.setOnPreparedListener(this);mVv.setOnErrorListener(this);mVv.setOnCompletionListener(this);/**//1.flv//2.3gp//3.avi//4.rmvb//5.mkv//storage/emulated/0/Download/5.mkv *///2.设置视频的地址//mVv.setVideoPath("/storage/emulated/0/Download/video_test.mp4");mVv.setVideoPath("http://192.168.1.100:8080/1.mp4");//mVv.setVideoPath("http://192.168.1.100:8080/2.3gp");//mVv.setVideoURI(Uri.parse("http://192.168.1.100:8080/2.3gp"));//3.设置控制条mVv.setMediaController(new MediaController(this));//4.开始播放mVv.start();}@Overridepublic void onCompletion(MediaPlayer mp) {// TODOToast.makeText(getApplicationContext(), "播放完了", 0).show();}@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {Toast.makeText(getApplicationContext(), "资源有问题", 0).show();return false;}@Overridepublic void onPrepared(MediaPlayer mp) {Toast.makeText(getApplicationContext(), "准备好了", 0).show();}}


4.vitamioDemo

(1)支持格式

public class MainActivity extends Activity {private VideoView vvv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (!LibsChecker.checkVitamioLibs(this))return;init();}private void init() {vvv = (VideoView) findViewById(R.id.vvv);System.out.println(vvv == null);vvv.setMediaController(new MediaController(this));/** * //1.flv//2.3gp3.avi//4.rmvb//5.mkv *///################设置视频地址##############################/**---------------本地视频---------------**///vvv.setVideoPath("/storage/emulated/0/Download/video_test.mp4");//本地地址播放 支持mp4//vvv.setVideoPath("/storage/emulated/0/Download/2.3gp");//本地地址播放  支持3gp//vvv.setVideoPath("/storage/emulated/0/Download/3.avi");// 可以播放声音.但是没有视频//vvv.setVideoPath("/storage/emulated/0/Download/4.rmvb");// 可以播放声音.但是没有视频vvv.setVideoPath("/storage/emulated/0/Download/5.mkv");////常规格式/**---------------网络视频---------------**///vvv.setVideoPath("http://192.168.1.100:8080/mp4.mp4");//网络地址 支持网络的mp4//vvv.setVideoPath("http://192.168.1.100:8080/2.3gp");  //网络地址 支持网络的3gp//vvv.setVideoPath("http://192.168.1.100:8080/flv.flv");//网络地址 支持网络的3gp//vvv.setVideoPath("http://192.168.1.100:8080/3.avi");  //网络地址 支持网络的avi//vvv.setVideoPath("http://192.168.1.100:8080/4.rmvb"); //网络地址 支持网络的rmvb//vvv.setVideoPath("http://192.168.1.100:8080/5.mkv"); //网络地址 支持网络的mkv//对流媒体支持//vvv.setVideoPath("mms://mediasrv2.iptv.xmg.com.cn/yinyue");//支持mms流媒体协议-->收音机//vvv.setVideoPath("http://live.3gv.ifeng.com/zixun.m3u8");//支持hls协议-->在线直播-->凤凰卫视vvv.setVideoPath("rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp");//支持rtsp协议-->实时流媒体传输协议-->监控//vvv.setVideoPath("rtsp://xgrammyawardsx.is.livestream-api.com/livestreamiphone/grammyawards");//支持rtsp协议-->实时流媒体传输协议-->监控//vvv.setVideoPath("http://m.livestream.com");//支持rtsp协议-->实时流媒体传输协议-->监控//http://dl76.80s.la:920/1406/筷子兄弟小苹果/筷子兄弟小苹果.mp4//################设置视频地址##############################vvv.start();vvv.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {Toast.makeText(getApplicationContext(), "准备好了", 0).show();}});//vvv.setVideoURI(Uri.parse("http://f5.r.56.com/f5.c186.56.com/flvdownload/0/2/sc_141249584035hd_clear.flv?v=1&t=W1ho-pj4TBZ04fA_snju0w&r=5745&e=1414389696&tt=379&sz=26349090&vid=128255495"));//vvv.setVideoURI(Uri.parse("http://www.56.com/u82/v_MTI4MjU1NDk1.html?ptag=vsogou"));//vvv.setVideoURI(Uri.parse("http://live.3gv.ifeng.com/zixun.m3u8"));//vvv.setMediaController(new MediaController(this));/*vvv.requestFocus();vvv.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {//vvv.start(); //mp.start();}});*/}}


 

21.vitamio的videoView集成

1.下载lib包.demo:` https://github.com/yixia/VitamioBundle

2.新建工程,引入lib包

3. 是否修改androidmanifest.xml 
 (1). 权限

   <uses-permission android:name="android.permission.INTERNET" />
   
 (2). 添加activity

   <!-- vitamio add -->
          <activity
            android:name="io.vov.vitamio.activity.InitActivity"
            android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.NoTitleBar"
            android:windowSoftInputMode="stateAlwaysHidden" />

4.代码的集成

(1)布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <io.vov.vitamio.widget.VideoView        android:id="@+id/vitamio_vv"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>


(2)MainActivity.java

public class MainActivity extends Activity implements OnPreparedListener, OnErrorListener, OnCompletionListener {private VideoView mVitamio_vv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//使用vitamio需要初始化引擎,引擎的检查/**---------------需要注意 begin---------------**/if (!LibsChecker.checkVitamioLibs(this))return;/**---------------需要注意 end---------------**/mVitamio_vv = (VideoView) findViewById(R.id.vitamio_vv);/**---------------设置监听---------------**/mVitamio_vv.setOnPreparedListener(this);mVitamio_vv.setOnErrorListener(this);mVitamio_vv.setOnCompletionListener(this);//设置路径//本地视频//网络视频//流媒体mVitamio_vv.setVideoPath("storage/emulated/0/Download/5.mkv");//设置控制条mVitamio_vv.setMediaController(new MediaController(this));//开始播放mVitamio_vv.start();}@Overridepublic void onCompletion(MediaPlayer mp) {// TODOToast.makeText(getApplicationContext(), "播放完了", 0).show();}@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {Toast.makeText(getApplicationContext(), "资源有问题", 0).show();// TODOreturn false;}@Overridepublic void onPrepared(MediaPlayer mp) {Toast.makeText(getApplicationContext(), "准备好了", 0).show();// TODO}}


 

22. vitamio的mediaplay的集成

1.相关配置见21.

2.MainActivity.java

public class MainActivity extends Activity implements OnErrorListener, OnPreparedListener, OnCompletionListener {private MediaPlayer mMediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//使用vitamio需要初始化引擎,引擎的检查/**---------------需要注意 begin---------------**/if (!LibsChecker.checkVitamioLibs(this))return;/**---------------需要注意 end---------------**/}public void click(View v) {try {mMediaPlayer = new MediaPlayer(this);mMediaPlayer.setOnErrorListener(this);mMediaPlayer.setOnPreparedListener(this);mMediaPlayer.setOnCompletionListener(this);mMediaPlayer.reset();mMediaPlayer.setDataSource("mms://mediasrv2.iptv.xmg.com.cn/yinyue");mMediaPlayer.prepareAsync();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void onCompletion(MediaPlayer mp) {Toast.makeText(getApplicationContext(), "播放完了", 0).show();}@Overridepublic void onPrepared(MediaPlayer mp) {Toast.makeText(getApplicationContext(), "准备好了", 0).show();mMediaPlayer.start();}@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {Toast.makeText(getApplicationContext(), "资源有问题", 0).show();// TODOreturn true;}@Overrideprotected void onDestroy() {if (mMediaPlayer != null) {mMediaPlayer.release();mMediaPlayer = null;}super.onDestroy();}}


 

22.百度媒体云介绍

1.百度媒体云

 

2.也可以单独作为播放器使用

 

23.百度媒体云运行demo总结

1.介绍:http://developer.baidu.com/cloud/media,或者直接百度`百度媒体云`
2. 下载: http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/video/sdk

3.集成方式

(1) 共享播放引擎方案:如果你的手机里面有了播放引擎就直接相互使用.如果没有,对其进行下载
     1. 优点:工程大小比较下;
     2. 缺点:如果用户手机之前没有安装播放引擎.然用户去安装引擎,用户体验差,很多用户都不接受
(2). Jar+so动态库方案:在工程里面直接集成jar+so动态库
     1. 优点:不用管手机里面是否有播放引擎
     2. 缺点:那么工程会大6m左右;

4.百度媒体云运行demo总结
(1)本地:支持所有格式
(2)网络:支持所有格式
(3)流媒体:支持mms rtsp支持   m3u8支持

 

24.媒体云的集成_共享播放引擎的方式

1. 修改AndroidManifest.xml文件-->添加activity或者添加权限

    包名需要自己修改

<!-- 百度媒体云.播放视频需要的activity -->        <activityandroid:name="com.baidu.cyberplayersdksample1.VideoViewPlayingActivity"            android:configChanges="keyboardHidden|orientation"            android:exported="true"            android:label="PlayingActivity"            android:screenOrientation="landscape"            android:theme="@android:style/Theme.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" />            </intent-filter>        </activity> <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.WAKE_LOCK" />


2. 添加`Baidu_CyberPlayer_SDK_Android.jar`
3. 写代码-->参考demo

 (1)controllerplaying.xml-------------必须的布局,直接复制用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/root"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal">    <RelativeLayout        android:id="@+id/view_holder"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true" >          </RelativeLayout>     <LinearLayout                android:id="@+id/controller_holder"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:orientation="vertical" >    </LinearLayout></RelativeLayout>


(2)VideoViewPlayingActivity.java-------必须的类,直接复制用

 

package com.example.badiut5demo59;import android.app.Activity;import android.content.Context;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.os.PowerManager;import android.os.PowerManager.WakeLock;import android.util.Log;import android.view.View;import android.widget.LinearLayout;import android.widget.RelativeLayout;import com.baidu.cyberplayer.sdk.BMediaController;import com.baidu.cyberplayer.sdk.BVideoView;import com.baidu.cyberplayer.sdk.BVideoView.OnCompletionListener;import com.baidu.cyberplayer.sdk.BVideoView.OnErrorListener;import com.baidu.cyberplayer.sdk.BVideoView.OnInfoListener;import com.baidu.cyberplayer.sdk.BVideoView.OnPreparedListener;public class VideoViewPlayingActivity extends Activity implements OnPreparedListener, OnCompletionListener, OnErrorListener, OnInfoListener {private final String TAG = "VideoViewPlayingActivity";private String mVideoSource = null;private BVideoView mVV = null;private BMediaController mVVCtl = null;private RelativeLayout mViewHolder = null;private LinearLayout mControllerHolder = null;private boolean mIsHwDecode = false;private final int UI_EVENT_PLAY = 0;private WakeLock mWakeLock = null;private static final String POWER_LOCK = "VideoViewPlayingActivity";//播放状态private  enum PLAYER_STATUS {PLAYER_IDLE, PLAYER_PREPARING, PLAYER_PREPARED,}private PLAYER_STATUS mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;private int mLastPos = 0;private View.OnClickListener mPreListener = new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.v(TAG, "pre btn clicked");}};private View.OnClickListener mNextListener = new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.v(TAG, "next btn clicked");}};Handler mUIHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case UI_EVENT_PLAY:mPlayerStatus = PLAYER_STATUS.PLAYER_PREPARING;if(mLastPos != 0){//如果有记录播放位置,先seek到想要播放的位置mVV.seekTo(mLastPos);mLastPos = 0;}//设置播放源mVV.setVideoPath(mVideoSource);//开始播放mVV.start();break;default:break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.controllerplaying);PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, POWER_LOCK);mIsHwDecode = getIntent().getBooleanExtra("isHW", false);Uri uriPath = getIntent().getData();if (null != uriPath) {String scheme = uriPath.getScheme();if (null != scheme && (scheme.equals("http") || scheme.equals("https") || scheme.equals("rtsp"))) {mVideoSource = uriPath.toString();} else {mVideoSource = uriPath.getPath();}}initUI();}/** * 初始化界面 */private void initUI() {mViewHolder = (RelativeLayout)findViewById(R.id.view_holder);mControllerHolder = (LinearLayout )findViewById(R.id.controller_holder);//创建BVideoView和BMediaControllermVV = new BVideoView(this);mVVCtl = new BMediaController(this);mViewHolder.addView(mVV);mControllerHolder.addView(mVVCtl);//注册listenermVV.setOnPreparedListener(this);mVV.setOnCompletionListener(this);mVV.setOnErrorListener(this);mVV.setOnInfoListener(this);mVVCtl.setPreNextListener(mPreListener, mNextListener);//关联BMediaControllermVV.setMediaController(mVVCtl);//设置解码模式mVV.setDecodeMode(BVideoView.DECODE_SW);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.v(TAG, "onPause");//在停止播放前 你可以先记录当前播放的位置,以便以后可以续播if(mPlayerStatus != PLAYER_STATUS.PLAYER_IDLE){mLastPos = mVV.getCurrentPosition();mVV.stopPlayback();}}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.v(TAG, "onResume");if (null != mWakeLock && (!mWakeLock.isHeld())) {mWakeLock.acquire();}//发起一次播放任务,当然您不一定要在这发起mUIHandler.sendEmptyMessage(UI_EVENT_PLAY);}@Overrideprotected void onStop(){super.onStop();Log.v(TAG, "onStop");}@Overrideprotected void onDestroy(){super.onDestroy();Log.v(TAG, "onDestroy");}@Overridepublic boolean onInfo(int what, int extra) {// TODO Auto-generated method stubreturn false;}/** * 播放出错 */@Overridepublic boolean onError(int what, int extra) {// TODO Auto-generated method stubLog.v(TAG, "onError");mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;return true;}/** * 播放完成 */@Overridepublic void onCompletion() {// TODO Auto-generated method stubLog.v(TAG, "onCompletion");mPlayerStatus = PLAYER_STATUS.PLAYER_IDLE;}/** * 播放准备就绪 */@Overridepublic void onPrepared() {// TODO Auto-generated method stubLog.v(TAG, "onPrepared");mPlayerStatus = PLAYER_STATUS.PLAYER_PREPARED;}}


 

(3)MainActivity.java

public class MainActivity extends Activity {//AK,SK需要我们注册百度的开发者.并且添加应用private String AK = "GsuXf8CSLerYpSh1Smksnitt";private String SK = "zssOn8r43S1cya7X";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//初始化BCyberPlayerFactory, 在其他任何接口调用前需要先对BCyberPlayerFactory进行初始化BCyberPlayerFactory.init(this);setContentView(R.layout.activity_main);//检测engine是否安装,如果没安装先安装enginecheckEngineInstalled();}public void click(View v) {//String path = "rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp";String path = "http://192.168.1.100:8080/4.rmvb";playVideo(path);}/** * 具体的播放操作 */private void playVideo(String path) {//如果engine没安装,进行提示if (!isEngineInstalled()) {setInfo("CyberPlayerEngine not installed,\n please install it first");} else {//如果已经安装String source = path;if (source == null || source.equals("")) {//简单检测播放源的合法性,不合法不播放setInfo("Please input a valid video path");} else {//播放前需要用ak,sk来初始化BEngineManager, 播放的时候会对ak,sk进行权限认证//当前您也可以到VideoViewPlayingActivity进行初始化BEngineManager mgr = BCyberPlayerFactory.createEngineManager();mgr.initCyberPlayerEngine(AK, SK);Intent intent = new Intent(this, VideoViewPlayingActivity.class);intent.setData(Uri.parse(source));startActivity(intent);}}}/** * 检测engine是否安装,如果没有安装需要安装engine */private void checkEngineInstalled() {if (isEngineInstalled()) {setInfo("CyberPlayerEngine Installed.\n");} else {//安装engineinstallEngine();}}/** * 下载并安装engine */private void installEngine() {BEngineManager mgr = BCyberPlayerFactory.createEngineManager();mgr.installAsync(mEngineListener);}/** * 检测engine是否安装 * @return */private boolean isEngineInstalled() {BEngineManager mgr = BCyberPlayerFactory.createEngineManager();return mgr.EngineInstalled();}private OnEngineListener mEngineListener = new OnEngineListener() {String info = "";String dlhead = "install engine: onDownload   ";String dlbody = "";@Overridepublic boolean onPrepare() {// TODO Auto-generated method stubinfo = "install engine: onPrepare.\n";setInfo(info);return true;}@Overridepublic int onDownload(int total, int current) {// TODO Auto-generated method stubif (dlhead != null) {info += dlhead;dlhead = null;}dlbody = current + "/" + total;setInfo(info + dlbody + "\n");return DOWNLOAD_CONTINUE;}@Overridepublic int onPreInstall() {// TODO Auto-generated method stubinfo += dlbody;info += "\n";info += "install engine: onPreInstall.\n";setInfo(info);return DOWNLOAD_CONTINUE;}@Overridepublic void onInstalled(int result) {// TODO Auto-generated method stubinfo += "install engine: onInstalled, ret = " + mRetInfo[result] + "\n";setInfo(info);if (result == OnEngineListener.RET_NEW_PACKAGE_INSTALLED) {//安装完成}}};public void setInfo(String str) {Toast.makeText(getApplicationContext(), str, 0).show();}//返回值对应的含义String[] mRetInfo = new String[] { "RET_NEW_PACKAGE_INSTALLED", "RET_NO_NEW_PACKAGE", "RET_STOPPED","RET_CANCELED", "RET_FAILED_STORAGE_IO", "RET_FAILED_NETWORK", "RET_FAILED_ALREADY_RUNNING","RET_FAILED_OTHERS", "RET_FAILED_ALREADY_INSTALLED", "RET_FAILED_INVALID_APK" };}

 

25.媒体云的集成_jar包+so库形式

1.加载多个包

2.清单文件配置---------如上

3.controllerplaying.xml-------如上

4.VideoViewPlayingActivity.java------如上

5.MainActivity.java

public class MainActivity extends Activity {private final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v) {String path = "http://192.168.1.100:8080/3.avi";playVideo(path);}private void playVideo(String path) {String source = path;if (source == null || source.equals("")) {/** * 简单检测播放源的合法性,不合法不播放 */Toast.makeText(this, "please input your video source", 500).show();Intent intent = new Intent(this, VideoViewPlayingActivity.class);intent.setData(Uri.parse(source));startActivity(intent);} else {Intent intent = new Intent(this, VideoViewPlayingActivity.class);intent.setData(Uri.parse(source));startActivity(intent);}}}


 

 

 

 

0 0
原创粉丝点击