2014-01-10 41 views
0

我的應用程序將手機音量調至最大。我的應用程序將手機音量調至最大

package com.sms; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.text.TextUtils; 
import android.widget.Toast; 

public class SMSReceiver extends BroadcastReceiver { 
private static final String number = "15555215556"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    Object[] messages = (Object[]) bundle.get("pdus"); 
    SmsMessage[] sms = new SmsMessage[messages.length]; 

    for (int i=0; i < messages.length; i++) { 
     sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]); 
    } 
    for (SmsMessage msg : sms) { 

     if (TextUtils.equals(msg.getOriginatingAddress(), number)) { 
      Toast.makeText(context, "" + msg.getMessageBody(), Toast.LENGTH_SHORT).show(); 

      //AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 

      MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.son1); 
      mPlayer.setVolume(1.0f, 1.0f); 
      mPlayer.start(); 
      abortBroadcast(); 
     } 
    } 
} 

}

我在this.getSystemService得到一個錯誤問我創建getSystemService方法。 有人可以幫助我。 謝謝。

+0

你是**類**延伸'Activity'? – Hariharan

+0

不,她擴展BroadcastReceiver – Merv

+0

你可以用'BroadcastReceiver'發佈你的代碼。可能是我的答案會幫助你。 – Hariharan

回答

0

試試這個..

final AudioManager mAudioManager = (AudioManager) context.getSystemService(AudioManager.STREAM_MUSIC); 

試試這個..

AudioManager mAudioManager; 
@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    Object[] messages = (Object[]) bundle.get("pdus"); 
    SmsMessage[] sms = new SmsMessage[messages.length]; 

    for (int i=0; i < messages.length; i++) { 
     sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]); 
    } 
    mAudioManager = (AudioManager) context.getSystemService(AudioManager.STREAM_MUSIC); 
    for (SmsMessage msg : sms) { 

     if (TextUtils.equals(msg.getOriginatingAddress(), number)) { 
      Toast.makeText(context, "" + msg.getMessageBody(), Toast.LENGTH_SHORT).show(); 

      MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.son1); 
      mPlayer.setVolume(1.0f, 1.0f); 
      mPlayer.start(); 
      abortBroadcast(); 
     } 
    } 

或者

@Override 
    public void onReceive(final Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     Object[] messages = (Object[]) bundle.get("pdus"); 
     SmsMessage[] sms = new SmsMessage[messages.length]; 

     for (int i=0; i < messages.length; i++) { 
      sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]); 
     } 

     for (SmsMessage msg : sms) { 

      if (TextUtils.equals(msg.getOriginatingAddress(), number)) { 
       Toast.makeText(context, "" + msg.getMessageBody(), Toast.LENGTH_SHORT).show(); 
       AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
       MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.son1); 
       mPlayer.setVolume(1.0f, 1.0f); 
       mPlayer.start(); 
       abortBroadcast(); 
      } 
     } 
+0

錯誤仍然存​​在。 我仍然在下面的紅色下劃線getSystemService – Merv

+0

你可以添加代碼或你在'onReceive'內使用你的代碼' – Hariharan

+0

好吧,我會指導它。 – Merv

1

getSystemService()方法源自Context抽象類。 ServiceActivity類擴展了Context類,以便您可以從其內部方法調用此方法。你試過什麼課?

+0

我已更新代碼 – Merv

0

我用這個代碼:

mAudioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);     
player = new MediaPlayer(); 
player = MediaPlayer.create(MainActivity.this, R.raw.alert); 

    if (player != null) 
     {         
      mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 
      mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_PLAY_SOUND); 
      player.start(); 
     } 

你說你正在使用BroadcastReciever,我這是怎麼弄的BroadcasReciever上下文,所以更改方法:

public class GPSStatusBroadcastReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 

mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);     
player = new MediaPlayer(); 
player = MediaPlayer.create(MainActivity.this, R.raw.alert); 

    if (player != null) 
     {         
      mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 
      mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_PLAY_SOUND); 
      player.start(); 
     } 


} 
+0

錯誤仍然存​​在。 我仍然在下面的紅色下劃線getSystemService – Merv

+0

請參閱我的編輯。 – Aiapaec

+1

thanks.I've已更新代碼 – Merv

相關問題