我是 android 编程的新手,我在获取短信接收服务以播放与传入的短信相关的音频文件时遇到问题。我有一个工作示例,但我无法停止从播放音乐文件或选择另一个文件来播放没有重叠的音频。所以我似乎需要让 SMS 接收服务调用媒体播放器服务,但不知道如何。此外,我还需要用不匹配的短信停止音乐。任何帮助都会很棒。这就是我在没有音频服务的情况下所拥有的。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class SMSreceiver extends BroadcastReceiver {
MediaPlayer mp1;
@Override
public void onReceive(Context ctx, Intent intent)
{
Bundle bundle = intent.getExtras();
//mp1 = MediaPlayer.create(ctx, R.raw.jingle);
if(null != bundle)
{
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
if(messages[i].getDisplayMessageBody().equals("a"))
{
//Play alarm sound
mp1 = MediaPlayer.create(ctx, R.raw.a);
mp1.setLooping(true); // Set looping
mp1.start();
} //---------------------------------------------------
if(messages[i].getDisplayMessageBody().equals("b"))
{
//Play alarm sound
mp1 = MediaPlayer.create(ctx, R.raw.b);
mp1.setLooping(true); // Set looping
mp1.start();
} //---------------------------------------------------
if(messages[i].getDisplayMessageBody().equals("c"))
{
//Play alarm sound
mp1 = MediaPlayer.create(ctx, R.raw.c);
mp1.setLooping(true); // Set looping
mp1.start();
} //---------------------------------------------------
if(messages[i].getDisplayMessageBody().equals("d"))
{
//Play alarm sound
mp1 = MediaPlayer.create(ctx, R.raw.d);
mp1.setLooping(true); // Set looping
mp1.start();
} //---------------------------------------------------
}
}
}
最佳答案
我用一个线程解决了它。我删除了 mp1.setLooping(true);
部分并使用了这个
mp1 = MediaPlayer.create(context, R.raw.calmpiano);
mp1.start();
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(true && (waited < 5000)) {
sleep(100);
if(true) {
waited += 100;
}
}
} catch(InterruptedException e) {
// do nothing
} finally {
// finish();
//startActivity(new Intent("com.talktome.android.MyOne.MyOneActivity"));
stop();
}
}
};
splashTread.start();
}
`
关于Android 接收短信和播放音乐服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792464/