在android中使用mp.stop()时出错
每当我在android中执行mp.stop时,我都会遇到这个错误,基本上是一条短信,其中body RING:(密码)播放音频,stop:(密码)停止音频。这出戏演得不错,但还没有结束在android中使用mp.stop()时出错,android,audio,media-player,message,Android,Audio,Media Player,Message,每当我在android中执行mp.stop时,我都会遇到这个错误,基本上是一条短信,其中body RING:(密码)播放音频,stop:(密码)停止音频。这出戏演得不错,但还没有结束 MediaPlayer mp = MediaPlayer.create(context, R.raw.braincandy); if (correctSHA1 != null) { if (intent.getAction().equals(SMS_RECEIVED)) {
MediaPlayer mp = MediaPlayer.create(context, R.raw.braincandy);
if (correctSHA1 != null) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object pdus[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[pdus.length];
for(int i = 0; i < pdus.length; i++) {
smsMessage[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
if (smsMessage[i].getMessageBody().contains("RING:")) {
String[] tokens = smsMessage[i].getMessageBody().split(":");
Log.v(TAG, "RING SMS Message keyword detected");
if (tokens.length >= 2) {
Log.v(TAG, "Token 1: " + tokens[0]);
Log.v(TAG, "Token 2: " + tokens[1]);
String SHA1hash = PhoneFinder.getSHA1(tokens[1]);
Log.v(TAG, "SHA1 Hash:" + SHA1hash);
Log.v(TAG, "Correct SHA1:" + correctSHA1);
if (SHA1hash.equals(correctSHA1)) {
Log.v(TAG, "SHA1 hash matched!");
this.abortBroadcast(); //Abort Broadcast for SMS Message
String to = smsMessage[i].getOriginatingAddress ();
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage (to, null, "success!", null, null);
NotificationManager nm = (NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(android.R.drawable.ic_dialog_info, "Alert", System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity (context, 0, new Intent (context, PhoneFinder.class), 0);
notification.setLatestEventInfo (context, "GPS address", "You have been detected", contentIntent);
nm.notify (R.string.service_start, notification);
//context.startService(new Intent(context, MyService.class));
mp.start();
}
}
}
else if (smsMessage[i].getMessageBody().contains("STOP:")) {
String[] tokens = smsMessage[i].getMessageBody().split(":");
Log.v(TAG, "STOP SMS Message keyword detected");
if (tokens.length >= 2) {
Log.v(TAG, "STOP Token 1: " + tokens[0]);
Log.v(TAG, "STOP Token 2: " + tokens[1]);
String SHA1hash = PhoneFinder.getSHA1(tokens[1]);
Log.v(TAG, "STOP SHA1 Hash:" + SHA1hash);
Log.v(TAG, "STOP Correct SHA1:" + correctSHA1);
if (SHA1hash.equals(correctSHA1)) {
Log.v(TAG, "STOP SHA1 hash matched!");
this.abortBroadcast(); //Abort Broadcast for SMS Message
// context.stopService(new Intent(context, MyService.class));
if (mp.isPlaying())
mp.pause();
}
}
在媒体播放器准备就绪之前,您无法启动媒体播放器;如果媒体播放器未播放,则无法暂停:) 因此,您必须在代码中进行修改,或者您可能想看一看非常好的教程 这肯定会对你有所帮助 谢谢:) 不允许在初始化媒体播放器后立即调用pause()。你只能在某些州叫它。这些状态由下图所示的状态图定义 编辑:您说过希望它停止,所以情况发生了变化
- 将初始化移到RING子句中并调用start()
- 直接在stop子句中调用stop(),然后立即调用reset()
- 确保响铃后始终有一个停止,停止后有一个响铃信息。否则,您将在错误的状态下调用MediaPlayer函数,并得到相同的错误李>
我们无法帮助您删除您的部分代码。似乎缺少听众@如果我的答案对你有帮助,别忘了接受它,给我投票。谢谢:)在准备好的侦听器上仍然不起作用,我真的不明白准备好的侦听器是如何工作的。您应该在if子句之外只进行一次初始化。你不需要准备好的听众。是的,我改了。更新了帖子中的代码和Logcat,不知道为什么它仍然不起作用。你想暂停音乐还是停止音乐?或者反过来问,你是想在收到铃声时继续播放音乐,还是想从头开始播放?好的,可能我想停止播放,但mp.stop()不起作用,当我收到铃声时,我想让它从头开始播放
07-22 10:11:30.082: V/Logging Activity(7207): New Broadcast Receiver
07-22 10:11:30.082: V/Logging Activity(7207): Password: passwd
07-22 10:11:30.087: V/MediaPlayer-JNI(7207): native_setup
07-22 10:11:30.087: V/MediaPlayer(7207): constructor
07-22 10:11:30.092: V/MediaPlayer(7207): setListener
07-22 10:11:30.092: V/MediaPlayer-JNI(7207): setDataSourceFD: fd 57
07-22 10:11:30.092: V/MediaPlayer(7207): setDataSource(57, 652, 2625504)
07-22 10:11:30.107: V/MediaPlayer(7207): setVideoSurfaceTexture
07-22 10:11:30.107: V/MediaPlayer(7207): prepare
07-22 10:11:30.112: V/MediaPlayer(7207): message received msg=5, ext1=0, ext2=0
07-22 10:11:30.112: V/MediaPlayer(7207): New video size 0 x 0
07-22 10:11:30.112: V/MediaPlayer(7207): callback application
07-22 10:11:30.117: V/MediaPlayer(7207): back from callback
07-22 10:11:30.117: V/MediaPlayer(7207): message received msg=1, ext1=0, ext2=0
07-22 10:11:30.117: V/MediaPlayer(7207): prepared
07-22 10:11:30.117: V/MediaPlayer(7207): signal application thread
07-22 10:11:30.117: V/MediaPlayer(7207): callback application
07-22 10:11:30.117: V/MediaPlayer(7207): back from callback
07-22 10:11:30.117: V/MediaPlayer(7207): prepare complete - status=0
07-22 10:11:30.122: D/Gsm/SmsMessage(7207): SMS SC timestamp: 1342923088000
07-22 10:11:30.132: V/Logging Activity(7207): RING SMS Message keyword detected
07-22 10:11:30.132: V/Logging Activity(7207): Token 1: RING
07-22 10:11:30.132: V/Logging Activity(7207): Token 2: abc123
07-22 10:11:30.137: V/Logging Activity(7207): SHA1 Hash:6367c48dd193d56ea7b0baad25b19455e529f5ee
07-22 10:11:30.137: V/Logging Activity(7207): Correct SHA1:6367c48dd193d56ea7b0baad25b19455e529f5ee
07-22 10:11:30.137: V/Logging Activity(7207): SHA1 hash matched!
07-22 10:11:30.167: V/MediaPlayer-JNI(7207): start
07-22 10:11:30.167: V/MediaPlayer(7207): start
07-22 10:11:30.202: E/MediaPlayer(7207): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message.
07-22 10:11:30.202: I/MediaPlayer(7207): Don't send intent. msg.arg1 = 0, msg.arg2 = 0
07-22 10:11:30.202: E/MediaPlayer(7207): mOnPreparedListener is null. Failed to send MEDIA_PREPARED message.
07-22 10:11:37.592: V/Logging Activity(7207): New Broadcast Receiver
07-22 10:11:37.592: V/Logging Activity(7207): Password: passwd
07-22 10:11:37.592: V/MediaPlayer-JNI(7207): native_setup
07-22 10:11:37.592: V/MediaPlayer(7207): constructor
07-22 10:11:37.592: V/MediaPlayer(7207): setListener
07-22 10:11:37.592: V/MediaPlayer-JNI(7207): setDataSourceFD: fd 57
07-22 10:11:37.592: V/MediaPlayer(7207): setDataSource(57, 652, 2625504)
07-22 10:11:37.612: V/MediaPlayer(7207): setVideoSurfaceTexture
07-22 10:11:37.612: V/MediaPlayer(7207): prepare
07-22 10:11:37.617: V/MediaPlayer(7207): message received msg=5, ext1=0, ext2=0
07-22 10:11:37.617: V/MediaPlayer(7207): New video size 0 x 0
07-22 10:11:37.617: V/MediaPlayer(7207): callback application
07-22 10:11:37.617: V/MediaPlayer(7207): back from callback
07-22 10:11:37.617: V/MediaPlayer(7207): message received msg=1, ext1=0, ext2=0
07-22 10:11:37.617: V/MediaPlayer(7207): prepared
07-22 10:11:37.617: V/MediaPlayer(7207): signal application thread
07-22 10:11:37.617: V/MediaPlayer(7207): callback application
07-22 10:11:37.617: V/MediaPlayer(7207): back from callback
07-22 10:11:37.617: V/MediaPlayer(7207): prepare complete - status=0
07-22 10:11:37.617: D/Gsm/SmsMessage(7207): SMS SC timestamp: 1342923096000
07-22 10:11:37.617: V/Logging Activity(7207): STOP SMS Message keyword detected
07-22 10:11:37.617: V/Logging Activity(7207): STOP Token 1: STOP
07-22 10:11:37.617: V/Logging Activity(7207): STOP Token 2: abc123
07-22 10:11:37.617: V/Logging Activity(7207): STOP SHA1 Hash:6367c48dd193d56ea7b0baad25b19455e529f5ee
07-22 10:11:37.617: V/Logging Activity(7207): STOP Correct SHA1:6367c48dd193d56ea7b0baad25b19455e529f5ee
07-22 10:11:37.617: V/Logging Activity(7207): STOP SHA1 hash matched!
07-22 10:11:37.617: V/MediaPlayer(7207): isPlaying: 0
07-22 10:11:37.617: V/MediaPlayer-JNI(7207): isPlaying: 0
07-22 10:11:37.617: E/MediaPlayer(7207): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message.
07-22 10:11:37.617: I/MediaPlayer(7207): Don't send intent. msg.arg1 = 0, msg.arg2 = 0
07-22 10:11:37.617: E/MediaPlayer(7207): mOnPreparedListener is null. Failed to send MEDIA_PREPARED message.
MediaPlayer mp = MediaPlayer.create(context, R.raw.braincandy);
mp.pause();