安卓,视屏播放示例


AndroidVideo.apk
源码下载
package com.sc.tool;import java.io.File;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;/** AndroidManifest.xml中配置:*
*//** 展示指定的视屏调用: ShowVideo.Open() */
public class ShowVideo extends Activity
{/** 使用当前Activity打开,指定路径下的视屏文件,* videoPath:可以为本地文件路径、或视屏文件网址 */public static void Open(Context context, String videoPath){if(videoPath.equals("")) return;Toast.makeText(context, "播放视屏文件:" + videoPath, Toast.LENGTH_SHORT).show();Toast.makeText(context, "待加载完成后,点击播放", Toast.LENGTH_SHORT).show();Intent intent = new Intent();intent.setAction("intent.action.ShowVideo");intent.putExtra("VideoPath", videoPath);// intent.setPackage(context.getPackageName()); // 用当前应用中的ShowFile打开context.startActivity(intent);}// /** 使用当前Activity打开,指定路径下的视屏文件,
// * data:文件对应的Uri */
// public static void Open(Context context, Uri data)
// {
// Intent intent = new Intent();
// intent.setAction("intent.action.ShowVideo");
// intent.putExtra("VideoPath", "USE_URI_DATA");
//
// intent.setData(data);
// // intent.setPackage(context.getPackageName()); // 用当前应用中的ShowFile打开
//
// context.startActivity(intent);
// }@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// 获取指定的视屏文件并显示Intent intent = this.getIntent();String videoPath = intent.getStringExtra("VideoPath");// 从网址或文件路径生成UriUri uri = null;/*if(videoPath.equals("USE_URI_DATA")){uri = intent.getData();}else*/{if(videoPath.startsWith("http://") || videoPath.startsWith("https://")){ // "http://scimence.gitee.io/androidvideo/1.mp4";uri = Uri.parse(videoPath);}else{ // "/sdcard/sc/video/tank_zmpy.mp4";uri=Uri.fromFile(new File(videoPath));}}// 创建视屏播放ViewVideoView videoView = new VideoView(this);{videoView.setVideoURI(uri); MediaController cotrol = new MediaController(this); // 视屏播放控制器videoView.setMediaController(cotrol);cotrol.setMediaPlayer(videoView);}this.setContentView(videoView);// 播放下一个、前一个// OnClickListener next = new OnClickListener()// {// @Override// public void onClick(View v)// {// // TODO Auto-generated method stub// // }// };// // cotrol.setPrevNextListeners(next, null);}}
package com.sc.demo;import sc.demo.video.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;import com.sc.tool.ShowVideo;public class MainActivity extends Activity
{EditText edit;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);this.setContentView(R.layout.activity_main);edit = (EditText) this.findViewById(R.id.textWebUrl);}/** 选择播放本地视屏资源 */public void btnLocal_Click(View view){Toast.makeText(this, "请选取一个待播放的视屏文件", Toast.LENGTH_SHORT).show();selectFile(this, "video/*", true); // 选取视屏并播放// ShowVideo.Open(this, "/sdcard/sc/video/tank_zmpy.mp4"); // 播放指定路径下的视屏}/** 播放网址对应的视屏资源 */public void btnWeb_Click(View view){String videoPath = edit.getText().toString();ShowVideo.Open(this, videoPath);}/** 调用系统方法选择文件 */private void selectFile(Activity context, String type, boolean autoPlay){Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType(type); // 设置类型,我这里是任意类型,任意后缀的可以这样写。intent.addCategory(Intent.CATEGORY_OPENABLE);if (autoPlay)context.startActivityForResult(intent, SELECT);else context.startActivityForResult(intent, SELECT_ONLY);}final static int SELECT_ONLY = 3; // 标记选取final static int SELECT = 1; // 标记选取final static int SHARE = 2; // 标记分享/** Activity执行结果 */protected void onActivityResult(int requestCode, int resultCode, Intent data){if (resultCode == Activity.RESULT_OK){if (requestCode == SELECT){Uri uri = data.getData();
// ShowVideo.Open(this, uri); // 打开选取的视屏String filePath = getPath(this, uri);ShowVideo.Open(this, filePath); // 打开选取的视屏}}}/** 获取Uri对应的文件路径 */public static String getPath(Context context, Uri uri){try{if ("content".equalsIgnoreCase(uri.getScheme())){String[] projection = { "_data" };Cursor cursor = null;try{cursor = context.getContentResolver().query(uri, projection, null, null, null);int column_index = cursor.getColumnIndexOrThrow("_data");if (cursor.moveToFirst()) { return cursor.getString(column_index); }}catch (Exception e){}}else if ("file".equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); }return null;}catch(Exception ex){return "";}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
