2013-12-07 4 views
0
package com.m.omg; 
import android.content.BroadcastReceiver;  
import android.content.Context; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

public class SmsReceiver extends BroadcastReceiver 
{ 
MediaPlayer mp =new MediaPlayer(); 
@Override 
public void onReceive(Context context, Intent intent) 
{ 

    String mymsg = null; 
    String num = null; 

    //get the SMS message passed in 
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null;    
    if (bundle != null) 
    { 
     //retrieving the received SMS 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length];    
     for (int i=0; i<msgs.length; i++){ 
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
      num = msgs[i].getOriginatingAddress(); 
      mymsg = msgs[i].getMessageBody().toString(); 
     } 
     Toast.makeText(context, "from" + num + ":" + mymsg, Toast.LENGTH_LONG).show(); 

     //making decision, depending on the number & message body 
     if (num.equalsIgnoreCase("some# :) ")){ 
      abortBroadcast(); 
      if (mymsg.equalsIgnoreCase("start")){ 

     mp.create(context, R.raw.music); 
     mp.start(); 

      } 
     } 
     mp.release(); 
    }  
} 

}MediaPlayer не инициализируется

* медиаплеере не инициализируется, когда состояние соответствует ... приложение работает нормально, когда я получаю SMS, отображается Toast, но медиа-плеер не запускается, Я получаю это предупреждение в затмении «статический метод создания (Context, INT) от типа MediaPlayer должен быть доступен в статическом пути», который я проигнорировал: D *

ответ

0

использование

mp=MediaPlayer.create(context, R.raw.music); 

вместо

mp.create(context, R.raw.music); 

для инициализации mp экземпляра MediaPlayer

+0

Большого спасибо чувака, я ценю это, но я попробовал еще раз и не было воспроизведение музыки после получения SMS, я заметил, что утра выпуская MediaPlayer, прежде чем он сможет даже воспроизвести музыку, я удалил mp.release(); и добавил mp.reset(); до mp = MediaPlayer.create (контекст, R.raw.music); ... И это на самом деле много работало, но я верю, что mp.release(); необходимо, не так ли? поэтому, где я должен добавить mp.release(); ?? << обратите внимание, что продолжительность воспроизведения музыкального файла составляет всего 3 секунды >> .. еще раз спасибо :) – Memo

Смежные вопросы