停止播放是否出现什么提示?如果有错误提示,将Logcat中的出错信息发上来。
解决方案 »
- 超难问题:安卓里的程序,怎么样在锁屏之后还能继续运行?急!!!
- android显示地图,在线等
- eclipse 项目
- 分享下关于android多版本,多分辨率,多机型支持的经验
- 请问,使用gallery控件时,如何能在选中一个item时候,使该item的图片放大显示。
- android sdk 各版本切换问题
- apk反编译回来的代码跟正向开发的代码语法有出入,看不懂.
- mac 系统使用Android Studio做的百度地图demo
- 推送消息的问题
- 设计师可以写Android应用界面吗?
- 关于Android 百度地图“交通路线”的“起点”和“终点”气泡去除,换成自定义的图像。
- ICS4.0如何全屏显示应用程序或者有何办法获得系统菜单上的x, y坐标?
package com.zhu.view;import java.io.File;import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;import com.zhu.R;public class VideoPlay extends Activity implements Callback {
private String path;
private MediaPlayer mediaPlayer;
String pathload;
private SurfaceView surfaceView;
private boolean pause;
private String filenames; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 隐藏状态栏 */
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
/* 隐藏标题栏 */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.video);
mediaPlayer = new MediaPlayer();
Bundle bundle = this.getIntent().getExtras();
filenames = bundle.getString("filenames");
pathload = bundle.getString("pathload");
surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().setFixedSize(320, 180);
surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(this);
playOn();
}
public void mediaplay(View v) {
switch (v.getId()) {
case R.id.playbutton:
if (pause && mediaPlayer!=null)
{
mediaPlayer.start();
pause = false;
}
else{
String filename = filenames.toString();
File file = new File(Environment.getExternalStorageDirectory(),
filename);
if (file.exists()) {
path = file.getAbsolutePath();
play(0);
} else {
path = null;
Toast.makeText(this, R.string.filenoexsit, Toast.LENGTH_LONG).show();
}
}
break; case R.id.pausebutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
pause = true;
} else {
if (pause) {
mediaPlayer.start();
pause = false;
}
}
break; case R.id.resetbutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(0);
} else {
if (path != null) {
play(0);
}
}
break;
case R.id.stopbutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
break;
}
}
private void play(int position) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(path);
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.prepare();// 缓冲
mediaPlayer.setOnPreparedListener(new PrepareListener(position));
} catch (Exception e) {
e.printStackTrace();
}
}
private void playOn() {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(pathload);
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.prepare();// 缓冲
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
} private final class PrepareListener implements OnPreparedListener {
private int position; public PrepareListener(int position) {
this.position = position;
} public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
if (position > 0)
mediaPlayer.seekTo(position);
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
} @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;public class PreviewActivityLoop extends Activity {
public static final String VIDEO_FOLDER_PATH = PropagandaVedioSettings.path;
private PowerManager.WakeLock localWakeLock = null;
private SurfaceView surfaceView = null;
private SurfaceHolder holder = null;
private MediaPlayer mPlayer = null;
private String[] sourceList;
private int sourceIndex = -1;
FileList filelist = new FileList(); public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
requestWindowFeature(Window.FEATURE_NO_TITLE); //hide title
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(0);// change display orientation
localWakeLock = ((PowerManager) getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
localWakeLock.acquire();//do not auto lock
View view = getLayoutInflater().inflate(R.layout.surfaceview, null);
setContentView(view);
Bundle bundle = getIntent().getExtras();
sourceIndex = bundle.getInt("sourceIndex");
sourceList = bundle.getStringArray("sourceList");
mPlayer = new MediaPlayer();
surfaceView = (SurfaceView)findViewById(R.id.surfaceView);
surfaceView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
finish();
return false;
}
});
holder = surfaceView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.setKeepScreenOn(true);
holder.addCallback(new SurfaceListener());
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
Intent intent = new Intent();
Bundle bundleloop = new Bundle();
bundleloop.putInt("sourceIndexloop", sourceIndex);
bundleloop.putStringArray("sourceListloop", sourceList);
intent.putExtras(bundleloop);
ComponentName cn = new ComponentName("com.android.loop","com.android.loop.PreviewActivity");
intent.setComponent(cn);
startActivity(intent);
finish();
}
});
}
@Override
protected void onDestroy() {
if(mPlayer.isPlaying()){
mPlayer.stop();
}
mPlayer.release();//release mPlayer
localWakeLock.release();//release localWakeLock
super.onDestroy();
}
@Override
protected void onPause() {
finish();
super.onPause();
}
private void play(String dataSource){
try{
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(dataSource);
mPlayer.setDisplay(holder);
mPlayer.prepare();
mPlayer.start();
}catch(IOException e){
Log.e("Exception", e.toString());
}
// mPlayer.setOnPreparedListener(new OnPreparedListener() {
//
// @Override
// public void onPrepared(MediaPlayer mp) {
// mPlayer.start();
// }
// });
}
private class SurfaceListener implements SurfaceHolder.Callback{ @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
} @Override
public void surfaceCreated(SurfaceHolder holder) {
//play(filelist.getVideo(sourceIndex));
play(sourceList[sourceIndex]);
sourceIndex++;
sourceIndex = sourceIndex%sourceList.length;
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}}