0
我有一个应用程序,我正尝试在关于媒体播放器使用的问题上进行调试。我有一个活动显示与服务后面的服务轮询一个服务器。活动显示服务从服务器收集的动态状态。这很好。然后,我在服务用于播放音频文件的类中添加了一些代码,如果它看到特定的数据项。这在前几次运行良好,但随后应用程序将冻结,甚至最终可能会关闭可怕的部队。
我在日志文件中看到以下内容。其关于我的警告和我似乎无法找到任何信息。Android MediaPlayer最终导致应用程序停止
11-14 10:12:29.742: WARN/AV(28909): #### Attempting to play audio ####
11-14 10:12:29.742: WARN/[email protected](28909): #### AV - Playing audio ####
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_Init
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 0
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.avc
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.avc
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 1
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.mpeg4
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.mpeg4
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 2
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.h263
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.decoder.h263
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 3
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.encoder.mpeg4
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.encoder.mpeg4
11-14 10:12:29.772: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 4
11-14 10:12:29.772: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.encoder.h263
11-14 10:12:29.782: INFO/QC_CORE(103): GetRolesOfComponent OMX.qcom.video.encoder.h263
11-14 10:12:29.782: INFO/QC_CORE(103): OMXCORE API - OMX_ComponentNameEnum 5bf30 128 5
11-14 10:12:29.862: WARN/MediaPlayer(28909): info/warning (1, 44)
11-14 10:12:29.862: INFO/MediaPlayer(28909): Info (1,44)
我使用的媒体播放器这样的:
private void playMedia(int audioResource,
boolean vibrate)
{
Log.i("AV", "#### Attempting to play audio ####");
if (this.lastAlert + VIBRATION_LENGTH <= System.currentTimeMillis())
{
this.lastAlert = System.currentTimeMillis();
Log.i(this.toString(), "#### AV - Playing audio ####");
try
{
MediaPlayer mediaPlayer = new MediaPlayer();
AssetFileDescriptor assetFileDescriptor
= this.context.getResources().openRawResourceFd(audioResource);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(),
assetFileDescriptor.getStartOffset(),
assetFileDescriptor.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
}
catch (Exception e)
{
Log.e(this.toString(), e.toString());
e.printStackTrace();
}
if (vibrate)
{
if (null != this.vibrator)
{
this.vibrator.vibrate(VIBRATION_LENGTH);
}
}
}
else
{
Log.w(this.toString(), "##### AV - Audio is already playing #####");
}
}// end playMedia
@Override
public void onCompletion(MediaPlayer mediaPlayer)
{
mediaPlayer.reset();
mediaPlayer.release();
Log.i(this.toString(), "#### ################################### ####");
Log.i(this.toString(), "#### AV - reset and release media player ####");
}
音频文件是MP3格式。
谢谢你的想法。这个问题在这一点上是OBE(被事件克服)。我不确定这是否是问题。我最终没有使用文件描述符。当时的媒体播放器也不在实际的活动中。这是现在,我没有更多的问题。 – bursk 2011-03-04 19:29:09