mehdi.safavie
شنبه 18 مهر 1394, 17:26 عصر
درود;
یه کلاس برای BrodcastReceiver نوشتم که وقتی اس ام اس میاد چک کن متن رو بخونه اگر با متنی که براش تعیین کردم برابر بود یه فایل mp3 رو پخش کنه ، البته قبل از پخش گوشی رو از حالت silent خارج میکنه .
همه چیز به درستی کار میکنه :
@Override
public void onReceive(Context context, Intent intent)
{
MainActivity mActivity = null;
final MediaPlayer mediaPlayer;
final SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
final int soundID = 1;
mediaPlayer = MediaPlayer.create(context, R.raw.sound_warning);
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
//soundPoolMap.put(soundID, soundPool.load(this, R.raw.midi_sound, 1));
soundPoolMap.put(soundID, soundPool.load(context, R.raw.sound_warning, 1));
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
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]);
str = msgs[i].getMessageBody().toString();
}
//---display the new SMS message---
if(str.trim() == "Mehdi".trim()){
//=====
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUD IO_SERVICE);
int maxVolumeMusic = audioManager.getStreamMaxVolume(AudioManager.STREA M_MUSIC);
audioManager.setRingerMode(AudioManager.RINGER_MOD E_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_M USIC, maxVolumeMusic, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
// TODO Auto-generated method stub
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
//=====
}
else
{
Toast toast = Toast.makeText(context,str,Toast.LENGTH_LONG);
toast.show();
}
}
}
فقط زمانی که اس ام اس دقیقا همین "Mehdi" میاد ، دستور IF کار نمیکنه و Else رو اجرا میکنه .
من Mehdi رو اس ام اس میکنم ، ولی انگار Mehdi اس ام اس نمیشه ! مشکل کجاست ؟
یه کلاس برای BrodcastReceiver نوشتم که وقتی اس ام اس میاد چک کن متن رو بخونه اگر با متنی که براش تعیین کردم برابر بود یه فایل mp3 رو پخش کنه ، البته قبل از پخش گوشی رو از حالت silent خارج میکنه .
همه چیز به درستی کار میکنه :
@Override
public void onReceive(Context context, Intent intent)
{
MainActivity mActivity = null;
final MediaPlayer mediaPlayer;
final SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
final int soundID = 1;
mediaPlayer = MediaPlayer.create(context, R.raw.sound_warning);
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
//soundPoolMap.put(soundID, soundPool.load(this, R.raw.midi_sound, 1));
soundPoolMap.put(soundID, soundPool.load(context, R.raw.sound_warning, 1));
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
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]);
str = msgs[i].getMessageBody().toString();
}
//---display the new SMS message---
if(str.trim() == "Mehdi".trim()){
//=====
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUD IO_SERVICE);
int maxVolumeMusic = audioManager.getStreamMaxVolume(AudioManager.STREA M_MUSIC);
audioManager.setRingerMode(AudioManager.RINGER_MOD E_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_M USIC, maxVolumeMusic, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
// TODO Auto-generated method stub
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
//=====
}
else
{
Toast toast = Toast.makeText(context,str,Toast.LENGTH_LONG);
toast.show();
}
}
}
فقط زمانی که اس ام اس دقیقا همین "Mehdi" میاد ، دستور IF کار نمیکنه و Else رو اجرا میکنه .
من Mehdi رو اس ام اس میکنم ، ولی انگار Mehdi اس ام اس نمیشه ! مشکل کجاست ؟