网友通过本文主要向大家介绍了影音先锋视频播放器,暴风影音视频播放器,影音视频播放器,qq影音视频播放器,吉吉影音视频播放器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
手机影音8--视频播放器的高级功能(1),8--高级功能
1.让其他软件能调起自己写的播放器
1.在功能清单文件添加下面的意图
<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>
2.文件或者图片浏览器 //1.调起系统所有的播放-隐式意图 Intent intent = new Intent(); intent.setDataAndType(Uri.parse("视频播放地址"),"video/*"); context.startActivity(intent);
3.视频播放器就会被调起并且播放
uri = getIntent().getData();//文件夹,图片浏览器,QQ空间
4.设置播放地址
videoview.setVideoURI(uri);
2.播放网络视频时候支持显示缓存进度
1_支持播放网络视频有缓冲效果
/** * 判断是否是网络资源 * @param uri * @return */ public boolean isNetUri(Uri uri) { boolean result = false; if (uri != null) { if (uri.toString().contains("http")|| uri.toString().contains("RTSP")|| uri.toString().contains("MMS")) { result = true; } else { result = false; } } return result; }
2_播放网络视频时候支持显示缓存进度
//缓存进度的更新 if (isNetUri) { //只有网络资源才有缓存效果 int buffer = videoview.getBufferPercentage();//0~100 int totalBuffer = buffer * seekbarVideo.getMax(); int secondaryProgress = totalBuffer / 100; seekbarVideo.setSecondaryProgress(secondaryProgress); } else { //本地视频没有缓冲效果 seekbarVideo.setSecondaryProgress(0); }
3.监听卡并且提示&监听拖动完成
1_监听卡并且提示
<!-- 卡的效果 --> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_videobuffer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="#33000000" android:visibility="gone" android:gravity="center" android:orientation="horizontal"> <ProgressBar android:layout_width="30dp" android:layout_height="30dp" /> <TextView android:id="@+id/tv_netspeed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="网速:20kb/s" android:textColor="@android:color/white" android:textSize="18sp" /> </LinearLayout>
代码
在VideoView中定义监听卡方法和监听完成方法
//设置监听卡2.3包括以后的版本才有 videoview.setOnInfoListener(new OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch (what) { case MediaPlayer.MEDIA_INFO_BUFFERING_START://当卡的时候和拖动卡的时候回调 // Toast.makeText(getApplicationContext(), "视频卡了", 1).show(); player_buffer.setVisibility(View.VISIBLE); isBuffing = true; break; case MediaPlayer.MEDIA_INFO_BUFFERING_END://当卡的时候和拖动卡结束的时候回调 // Toast.makeText(getApplicationContext(), "视频不卡了", 1).show(); player_buffer.setVisibility(View.GONE); isBuffing = false; break; } return true; } });
2_自定义监听卡
//监听卡 if (!isUseSystem) { if(videoview.isPlaying()){ int buffer = currentPosition - precurrentPosition; if (buffer < 500) { //视频卡了 ll_buffer.setVisibility(View.VISIBLE); } else { //视频不卡了 ll_buffer.setVisibility(View.GONE); } }else{ ll_buffer.setVisibility(View.GONE); } }
3_监听拖动完成
//设置拖动完成 videoview.setOnSeekCompleteListener(new OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { if(isBuffing){ // TODO Auto-generated method stub player_buffer.setVisibility(View.GONE); } }
});
百度搜索:android 获取当前网速
http://www.2cto.com/kf/201412/358191.html
/** * 得到当前的网速 *@paramcontext *@return */ public String getNetSpeed(Context context) { long nowTotalRxBytes = TrafficStats.getUidRxBytes(context.getApplicationInfo().uid)==TrafficStats.UNSUPPORTED ? 0 :(TrafficStats.getTotalRxBytes()/1024);//转为KB; long nowTimeStamp = System.currentTimeMillis(); longspeed = ((nowTotalRxBytes - lastTotalRxBytes) *1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换 lastTimeStamp = nowTimeStamp; lastTotalRxBytes = nowTotalRxBytes; String speedStr = String.valueOf(speed) + " kb/s"; return speedStr; }