描述Android系统在视频播放时来电话的解决方案
来源:互联网 发布:python源码剖析 编辑:程序博客网 时间:2024/06/06 00:20
1.当来电后返回后,只有声音,没有画面时,是因为当前activity对象被遮挡后,SurfaceView对象被销毁,而activity重新显示时他的重建晚于onResume()方法的执行。
此时应解决SurfaceView的重建问题:
private final class SurfaceCallback implements Callback{
public void surfaceCreated(SurfaceHolder holder) {
if(position >0 && videoFile != null){
try {
playVideo(videoFile);
Log.i(TAG,"position="+ position);
mediaPlayer.seekTo(position);
position = 0;
} catch (IOException e) {
Log.e(TAG,e.toString());
}
}
Log.i(TAG, "surfaceCreated");
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
if(mediaPlayer != null && mediaPlayer.isPlaying()){
position = mediaPlayer.getCurrentPosition();
mediaPlayer.stop();
}
Log.i(TAG, "surfaceDestroyed");
}
}
为SurfaceView对象添加Callback对象
holder.addCallback(new SurfaceCallback());
2.解决内存不足时应用被杀死问题(应用程序如处于后台,且系统需要内存时会把应用杀死,此时回到播放器界面,需要重新调用onCreate()方法):
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
String fn = savedInstanceState.getString("fileName");
if(fn!=null){
videoFile = new File(Environment.getExternalStorageDirectory(),fn);
}
super.onRestoreInstanceState(savedInstanceState);
}
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("position", position);
outState.putString("fileName", videoFile.getName());
super.onSaveInstanceState(outState);
此时应解决SurfaceView的重建问题:
private final class SurfaceCallback implements Callback{
public void surfaceCreated(SurfaceHolder holder) {
if(position >0 && videoFile != null){
try {
playVideo(videoFile);
Log.i(TAG,"position="+ position);
mediaPlayer.seekTo(position);
position = 0;
} catch (IOException e) {
Log.e(TAG,e.toString());
}
}
Log.i(TAG, "surfaceCreated");
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
if(mediaPlayer != null && mediaPlayer.isPlaying()){
position = mediaPlayer.getCurrentPosition();
mediaPlayer.stop();
}
Log.i(TAG, "surfaceDestroyed");
}
}
为SurfaceView对象添加Callback对象
holder.addCallback(new SurfaceCallback());
2.解决内存不足时应用被杀死问题(应用程序如处于后台,且系统需要内存时会把应用杀死,此时回到播放器界面,需要重新调用onCreate()方法):
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
String fn = savedInstanceState.getString("fileName");
if(fn!=null){
videoFile = new File(Environment.getExternalStorageDirectory(),fn);
}
super.onRestoreInstanceState(savedInstanceState);
}
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("position", position);
outState.putString("fileName", videoFile.getName());
super.onSaveInstanceState(outState);
0 0
- 描述Android系统在视频播放时来电话的解决方案
- 描述Android系统在视频播放时来电话的解决方案
- 描述在视频播放时来电话的解决方案。
- 描述在视频播放时来电话的解决方案
- 在Android中来实现视频的播放
- android调用系统的录制、播放视频
- //播放时候,来电话的处理
- Android引入IjkPlayer无法播放mkv格式视频的解决方案
- ios 编程: ipad 和 iphone开发中使用 UIWebView 来播放视频的时候,在页面切换时 停止播放
- ios 编程: ipad 和 iphone开发中使用 UIWebView 来播放视频的时候,在页面切换时 停止播放
- 在安卓中使用VideoView来播放视频
- android 视频播放 -- 调用系统播放器
- Android 调用系统播放器播放视频
- android新手 调用系统默认播放器播放视频在视频没有放完时如何关闭播放器
- 在 mac 系统下播放.csf 视频的方法
- 调用android系统本地的播放器播放本地视频或者网络视频
- Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案
- ubuntu 系统在播放视频时,一段时间后黑屏
- macbook air完美使用wtg外接硬盘运行win8系统
- MySql的一些常用命令
- 常见的时间序列数据库概述
- svn使用与配置
- 23种设计模式2--创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
- 描述Android系统在视频播放时来电话的解决方案
- mysql 优化(5)索引与排序
- 杂谈:Electron
- Linux驱动开发、21-块设备驱动设计
- Android 6.0+ 运行时权限探索
- java之Calendar的一些用法
- 2016.5.29(2)
- 关于项目的一些心得
- 23岁,开始确定人生的方向