Android(安卓)– Video/Music 视频音乐播放
16lz
2022-05-28
package org.apache.android.media;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.webkit.URLUtil;import android.widget.EditText;import android.widget.ImageButton;import android.widget.Toast;import android.widget.VideoView;public class VideoViewDemo extends Activity {private static final String TAG = "VideoViewDemo";private VideoView mVideoView;private EditText mPath;private ImageButton mPlay;private ImageButton mPause;private ImageButton mReset;private ImageButton mStop;private String current;@Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.main);mVideoView = (VideoView) findViewById(R.id.surface_view);mPath = (EditText) findViewById(R.id.path);mPath.setText("http://daily3gp.com/vids/747.3gp");mPlay = (ImageButton) findViewById(R.id.play);mPause = (ImageButton) findViewById(R.id.pause);mReset = (ImageButton) findViewById(R.id.reset);mStop = (ImageButton) findViewById(R.id.stop);mPlay.setOnClickListener(new OnClickListener() {public void onClick(View view) {playVideo();}});mPause.setOnClickListener(new OnClickListener() {public void onClick(View view) {if (mVideoView != null) {mVideoView.pause();}}});mReset.setOnClickListener(new OnClickListener() {public void onClick(View view) {if (mVideoView != null) {mVideoView.seekTo(0);}}});mStop.setOnClickListener(new OnClickListener() {public void onClick(View view) {if (mVideoView != null) {current = null;mVideoView.stopPlayback();}}});runOnUiThread(new Runnable(){public void run() {playVideo();}});}private void playVideo() {try {final String path = mPath.getText().toString();Log.v(TAG, "path: " + path);if (path == null || path.length() == 0) {Toast.makeText(VideoViewDemo.this, "File URL/path is empty",Toast.LENGTH_LONG).show();} else {// If the path has not changed, just start the media playerif (path.equals(current) && mVideoView != null) {mVideoView.start();mVideoView.requestFocus();return;}current = path;mVideoView.setVideoPath(getDataSource(path));mVideoView.start();mVideoView.requestFocus();}} catch (Exception e) {Log.e(TAG, "error: " + e.getMessage(), e);if (mVideoView != null) {mVideoView.stopPlayback();}}}private String getDataSource(String path) throws IOException {if (!URLUtil.isNetworkUrl(path)) {return path;} else {URL url = new URL(path);URLConnection cn = url.openConnection();cn.connect();InputStream stream = cn.getInputStream();if (stream == null)throw new RuntimeException("stream is null");File temp = File.createTempFile("mediaplayertmp", "dat");temp.deleteOnExit();String tempPath = temp.getAbsolutePath();FileOutputStream out = new FileOutputStream(temp);byte buf[] = new byte[128];do {int numread = stream.read(buf);if (numread <= 0)break;out.write(buf, 0, numread);} while (true);try {stream.close();} catch (IOException ex) {Log.e(TAG, "error: " + ex.getMessage(), ex);}return tempPath;}}}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer