Android SurfaceView播放视频有声音无图像问题
2012-05-21 19:45
585 查看
在用SurfaceView播放视频时,如果处理不当,会出现有声音无图像的问题,主要的原因是,在调用MediaPlayer开始播放视频时,SurfaceView却还未创建成功,解决办法是判断SurfaceView创建成功后再调用MediaPlayer的播放,通过surfaceHolder的addCallBack()方法来监听surfaceCreated。
以下是2段源码,第1段有声音无图像,第2段有声音有图像
源码1:有声音无图像
源码2:有声音有图像
以下是2段源码,第1段有声音无图像,第2段有声音有图像
源码1:有声音无图像
import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainActivity extends Activity { private SurfaceView surfaceView = null ; private SurfaceHolder surfaceHolder = null ; private MediaPlayer mp = null ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); surfaceView = new SurfaceView(this); surfaceHolder = surfaceView.getHolder(); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); setContentView(surfaceView); mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.setDisplay(surfaceHolder); try { mp.setDataSource("/sdcard/DownAndPlay/xyj.mp4"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { mp.prepare(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } mp.start(); } }
源码2:有声音有图像
import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainActivity extends Activity implements SurfaceHolder.Callback { private SurfaceView surfaceView = null ; private SurfaceHolder surfaceHolder = null ; private MediaPlayer mp = null ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); surfaceView = new SurfaceView(this); surfaceHolder = surfaceView.getHolder(); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceHolder.addCallback(this); setContentView(surfaceView); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.setDisplay(surfaceHolder); try { mp.setDataSource("/sdcard/DownAndPlay/xyj.mp4"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { mp.prepare(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } mp.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } }
相关文章推荐
- Android VideoView播放avi格式视频有声音无图像问题
- Android Webview中解决H5的音视频不能自动播放、只有声音没有图像的问题
- Android WebView 播放视频的问题(只有声音没有图像)
- Android VideoView播放视频只有声音没有图像黑屏
- Android VideoView播放视频只有声音没有图像黑屏
- Android Vitamio播放视频有声音无图像问题解决
- 解决Android使用SurfaceView播放视频结束后黑屏问题
- 关于android视频播放开发中 播放视频只有声音没有图像的问题解决方案
- Android WebView页面结束后视频播放还有声音问题处理
- Android WebView页面结束后视频播放还有声音问题
- Android VideoView播放视频只有声音没有图像黑屏
- Android 机顶盒开发播放视频有声音无图像问题
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android 使用 MediaPlayer + SurfaceView 播放视频
- Android里面使用MediaPlayer通过SurfaceView播放视频的示例
- Android之SurfaceView实现视频播放
- Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android - SurfaceView+MediaPlayer、VideoView 2种方法播放视频
- android surfaceview播放视频前,出现黑屏
- android中使用surfaceview+MediaPlayer播放视频