2012-01-09 31 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(); 
} 

     `