Android Vitamio 4.2更新5.0崩溃
由于开发者控制台的安全问题,我按照谷歌的要求将Vitamio4.2.2更新为5.0.0。但代码是一样的。仅更改了Vitamio.i初始化(getApplicationContext());没有错误。应用程序已安装。但视频不能播放。我该怎么办 公共类MainActivity扩展活动实现MediaPlayer.OnBufferingUpdateListener、MediaPlayer.OnCompletionListener、MediaPlayer.OnPreparedListener、MediaPlayer.OnVideoSizeChangedListener、SurfaceHolder.Callback{Android Vitamio 4.2更新5.0崩溃,android,vitamio,Android,Vitamio,由于开发者控制台的安全问题,我按照谷歌的要求将Vitamio4.2.2更新为5.0.0。但代码是一样的。仅更改了Vitamio.i初始化(getApplicationContext());没有错误。应用程序已安装。但视频不能播放。我该怎么办 公共类MainActivity扩展活动实现MediaPlayer.OnBufferingUpdateListener、MediaPlayer.OnCompletionListener、MediaPlayer.OnPreparedListener、MediaP
private static String TAG = MainActivity.class.getSimpleName();
private static String ShowTV = "http://mn-i.mncdn.com/showtv_ios/smil:showtv.smil/playlist.m3u8";";
private TextView tvLoader;
private int mVideoWidth;
private int mVideoHeight;
public MediaPlayer mMediaPlayer;
private SurfaceView mPreview;
private SurfaceHolder holder;
private boolean mIsVideoSizeKnown = false;
private boolean mIsVideoReadyToBePlayed = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Vitamio.isInitialized(getApplicationContext());
if (Build.VERSION.SDK_INT < 16)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
else
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
tvLoader = (TextView) findViewById(R.id.tvLoader);
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(this);
holder.setFormat(PixelFormat.RGBA_8888);
}
public void playVideo() {
doCleanUp();
try {
// Create a new media player and set the listeners
mMediaPlayer = new MediaPlayer(this);
mMediaPlayer.setDataSource(ShowTv);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
}
public void onBufferingUpdate(MediaPlayer arg0, int percent) {
// Log.d(TAG, "onBufferingUpdate percent:" + percent);
}
public void onCompletion(MediaPlayer arg0) {
Log.d(TAG, "onCompletion called");
}
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
Log.v(TAG, "onVideoSizeChanged called");
if (width == 0 || height == 0) {
Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
return;
}
mIsVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}
public void onPrepared(MediaPlayer mediaplayer) {
Log.d(TAG, "onPrepared called");
mIsVideoReadyToBePlayed = true;
tvLoader.setVisibility(View.GONE);
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}
public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
Log.d(TAG, "surfaceChanged called");
}
public void surfaceDestroyed(SurfaceHolder surfaceholder) {
Log.d(TAG, "surfaceDestroyed called");
}
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "surfaceCreated called");
playVideo();
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
doCleanUp();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
doCleanUp();
}
public void releaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
private void doCleanUp() {
tvLoader = (TextView) findViewById(R.id.tvLoader);
tvLoader.setVisibility(View.VISIBLE);
mVideoWidth = 0;
mVideoHeight = 0;
mIsVideoReadyToBePlayed = false;
mIsVideoSizeKnown = false;
}
private void startVideoPlayback() {
Log.v(TAG, "startVideoPlayback");
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
private static String TAG=MainActivity.class.getSimpleName();
专用静态字符串ShowTV=”http://mn-i.mncdn.com/showtv_ios/smil:showtv.smil/playlist.m3u8";";
私有文本视图tvLoader;
私有整数宽度;
私人身高;
公共媒体播放层;
私人SurfaceView mPreview;
私人土地持有人;
私有布尔值mIsVideoSizeKnown=false;
私有布尔值mIsVideoReadyToBePlayed=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Vitamio.i初始化(getApplicationContext());
如果(Build.VERSION.SDK_INT<16)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);
其他的
getWindow().getDecorView().SetSystemMivibility(视图、系统、用户界面、标志、全屏);
tvLoader=(TextView)findViewById(R.id.tvLoader);
mPreview=(SurfaceView)findViewById(R.id.surface);
holder=mPreview.getHolder();
holder.addCallback(本);
holder.setFormat(PixelFormat.RGBA_8888);
}
公共视频{
doCleanUp();
试一试{
//创建新的媒体播放器并设置侦听器
mMediaPlayer=新媒体播放器(此);
mmediplayer.setDataSource(ShowTv);
mmediplayer.setDisplay(支架);
mMediaPlayer.prepareAsync();
mmediplayer.setOnBufferingUpdateListener(此);
mmediplayer.setOnCompletionListener(此);
mmediplayer.setOnPreparedListener(此);
mmediplayer.setOnVideoSizeChangedListener(此);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}捕获(例外e){
Log.e(标记“error:+e.getMessage(),e);
}
}
public void onBufferingUpdate(MediaPlayer arg0,整数百分比){
//Log.d(标签“onBufferingUpdate percent:+percent”);
}
完成时的公共作废(MediaPlayer arg0){
Log.d(标记“onCompletion called”);
}
VideoSizeChanged上的公共空白(MediaPlayer mp、整数宽度、整数高度){
Log.v(标记“onVideoSizeChanged”);
如果(宽度=0 | |高度=0){
Log.e(标记“无效视频宽度(“+width+”)或高度(“+height+”)”);
返回;
}
mIsVideoSizeKnown=真;
mVideoWidth=宽度;
mVideoHeight=高度;
如果(播放错误的视频读取和错误的视频大小){
startVideoPlayback();
}
}
已准备好公开作废(MediaPlayer MediaPlayer){
Log.d(标签“onPrepared called”);
mIsVideoReadyToBePlayed=true;
tvLoader.setVisibility(View.GONE);
如果(播放错误的视频读取和错误的视频大小){
startVideoPlayback();
}
}
公共空间表面更改(表面更改表面更改表面更改、内部i、内部j、内部k){
Log.d(标签“surfaceChanged called”);
}
公共空间表面已覆盖(表面层表面层){
Log.d(标签“表面处理”);
}
已创建的公共空白表面(表面持有人){
Log.d(标签“表面处理”);
播放视频();
}
@凌驾
受保护的void onPause(){
super.onPause();
释放MediaPlayer();
doCleanUp();
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
释放MediaPlayer();
doCleanUp();
}
public void releaseMediaPlayer(){
if(mmediplayer!=null){
mmediplayer.release();
mmediplayer=null;
}
}
私有void doCleanUp(){
tvLoader=(TextView)findViewById(R.id.tvLoader);
tvLoader.setVisibility(View.VISIBLE);
mVideoWidth=0;
mVideoHeight=0;
mIsVideoReadyToBePlayed=错误;
mIsVideoSizeKnown=假;
}
私有void startVideoPlayback(){
Log.v(标签“startVideoPlayback”);
支架。设置固定尺寸(MVideWidth、MVideHeight);
mmediplayer.start();
}
}请向我们展示一些与您的问题相关的代码。如果没有这些代码,您将非常困难。添加的代码是否可以查看请添加崩溃日志/堆栈跟踪