2012-01-09 83 views
1

我是新来的android编程,我有一个获取短信接收服务播放与短信相关的音频文件的问题。我有一个工作示例,那种但我无法停止播放音乐文件,也无法选择另一个文件来播放音频。所以我似乎需要让SMS收到服务电话mediaplayer服务,但不知道如何。此外,我需要让音乐停下来,并带来无与伦比的文字信息。任何帮助将是伟大的。这就是我的音频服务。Android接收短信并播放音乐服务

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(); 

      } //--------------------------------------------------- 


     } 
    } 
} 
+0

这是否有帮助 - http://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices – 2012-01-09 17:43:59

回答

2

我解决它使用thread.I删除了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(); 
} 

     `