2015-11-12 44 views
-2

我嘗試了互聯網上找到的幾乎所有東西,一旦啓動,我無法停止媒體播放器。我使用廣播接收器,並使用SMS控制媒體播放器。這是我的代碼。不能停止在Android的媒體播放器

public class Receiver extends BroadcastReceiver{ 
    String body; 
    String address; 
    public static final String SMS_EXTRA_NAME="pdus"; 
    MediaPlayer mp = new MediaPlayer(); 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 


     SharedPreferences obj1=context.getSharedPreferences("mypref", Context.MODE_PRIVATE); 
     String newstring=obj1.getString("key1", null); 
     String name=newstring; 


     Bundle bund=intent.getExtras(); 
     String space=""; 
     if(bund!=null) 
     { 
      Object[] smsExtra=(Object[])bund.get(SMS_EXTRA_NAME); 
      for(int i=0;i<smsExtra.length;i++) 
      { 
       SmsMessage sms=SmsMessage.createFromPdu((byte[])smsExtra[i]); 
       body=sms.getMessageBody().toString(); 
       address=sms.getOriginatingAddress(); 

       if(body.equals("ON")) 
       { 
        if(mp.isPlaying()) 
        { 
         mp.stop(); 
        } 

        try { 
         mp.reset(); 
         AssetFileDescriptor afd; 
         afd = context.getAssets().openFd("file.mp3"); 
         mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 
         mp.prepare(); 
         mp.start(); 
         mp.setLooping(true); 
        } catch (IllegalStateException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 




       else if(body.equals("OFF")) 
       { 
        if (mp.isPlaying()==true||mp!=null) 
        { 
         try{ 


          mp.stop(); 
          mp.release(); 


         } catch(Exception e){ 
          System.out.println("Exception"+e); 
         } 
        } 

       } 




      }  

     } 
    } 
} 

當我發送「ON」時媒體播放器開啓,但它不會關閉。是的,我已經在Manifest文件中提供了所需的權限。

+0

停止播放器時有任何錯誤/異常? – Qasim

+0

沒有錯誤。沒有應用程序崩潰..除了媒體播放器沒有停止,一切都很好。 –

+0

您是否調試過並檢查了mp.stop();實際上是調用? –

回答

1

BroadcastReciever它保持活着大約9秒,你應該而不是在其中創建大操作。但是,您可以讓它像開始活動或服務一樣開始操作,然後您可以播放曲目或開始下載文件...等 如果您只想啓動播放器並且不需要用戶交互,我建議您啓動一個服務,你在那裏玩你想要的東西。

+0

是的,我明白了。我使用接收器來調用服務 –