Android vitamio 4.2.1在状态4中调用玩家停止时出错
当我运行此代码时,在vitamio中会出现此异常Android vitamio 4.2.1在状态4中调用玩家停止时出错,android,vitamio,Android,Vitamio,当我运行此代码时,在vitamio中会出现此异常 05-18 17:04:51.385: E/Vitamio[4.2.1][Player](7555): stop called in state 4 05-18 17:04:51.385: D/dalvikvm(7555): threadid=21: thread exiting, not yet detached (count=0) 05-18 17:04:51.385: D/dalvikvm(7555): threadid=21: threa
05-18 17:04:51.385: E/Vitamio[4.2.1][Player](7555): stop called in state 4
05-18 17:04:51.385: D/dalvikvm(7555): threadid=21: thread exiting, not yet detached (count=0)
05-18 17:04:51.385: D/dalvikvm(7555): threadid=21: thread exiting, not yet detached (count=1)
05-18 17:04:51.385: E/dalvikvm(7555): threadid=21: native thread exited without detaching
05-18 17:04:51.385: E/dalvikvm(7555): VM aborting
05-18 17:04:51.390: A/libc(7555): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 8108 (helnix.signage)
有人知道这个例外是什么意思吗
如何确定产生该异常的线程以及如何防止该异常
提前感谢您能否更新您的标题,使其更具信息性和正式性?好的,您能帮助我吗?具体什么时候发生异常?按“上一步”后,在应用程序启动时?不,只是在应用程序启动时
private void playVideo(String path) {
doCleanUp();
try {
if (path == "") {
// Tell the user to provide a media file URL.
Toast.makeText(
this,
"Please edit Your Path,"
+ " and set the path variable to your media file URL.",
Toast.LENGTH_LONG).show();
return;
} else {
// Create a new media player and set the listeners
mMediaPlayer = new MediaPlayer(this);
mMediaPlayer.setDataSource(path);
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.i(TAG, "PlayVideoException");
Log.e(TAG, "error: " + e.getMessage(), e);
// Toast.makeText(this, "sorry", Toast.LENGTH_LONG).show();
}
}
public void onBufferingUpdate(MediaPlayer arg0, int percent) {
// Log.d(TAG, "onBufferingUpdate percent:" + percent);
}
public long getCurrentPosition() {
return mMediaPlayer.getCurrentPosition();
}
public long getDuration() {
return mMediaPlayer.getDuration();
}
public boolean onError(MediaPlayer mp, int whatError, int extra) {
if (whatError == MediaPlayer.MEDIA_ERROR_IO) {
Log.v(TAG, "Media Error, Server Died " + extra);
} else if (whatError == MediaPlayer.MEDIA_ERROR_UNKNOWN) {
Log.v(TAG, "Media Error, Error Unknown " + extra);
}
isVideoError = true;
return false;
}
public void onCompletion(MediaPlayer arg0) {
onComplete = true;
Log.d(TAG, "onCompletion called");
Log.i(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;
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");
try {
doTimerTaskforVideo();
} catch (Exception e) {
Log.d(TAG, "surfaceCreated created Exception");
}
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
doCleanUp();
}
@Override
protected void onDestroy() {
super.onDestroy();
TRS.RssTimer.cancel();
VideoTimer.cancel();
XMLTimer.cancel();
surfaceDestroyed(holder);
releaseMediaPlayer();
mMediaPlayer = null;
doCleanUp();
}
private void releaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
private void doCleanUp() {
mVideoWidth = 0;
mVideoHeight = 0;
mIsVideoReadyToBePlayed = false;
mIsVideoSizeKnown = false;
}
private void startVideoPlayback() {
Log.v(TAG, "startVideoPlayback");
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}