2010-07-06 5 views
0

Android 개발 초보자이며 wifi & 오디오 서비스를 사용 또는 사용 중지하는 데 어려움이 있습니다. getSystemService 메소드를 사용하여 적절한 관리자 인스턴스를 얻습니다.Android에서 서비스 사용 및 사용 중지시 문제가 발생했습니다.

wifiMgr.setWifiEnabled(true);   

을하지만 무선 랜은 간단하게 설정되지 않은 :하지만 사용하여 무선 랜을 사용할 때 어떤 오류가 발생하지 않습니다! 마찬가지로 사용합니다

mAudio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
or 
mAudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 

그러나 휴대 전화는 자동 모드로 전환되지 않습니다.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try{    

    final ToggleButton bt = (ToggleButton)findViewById(R.id.bluetooth_button); 
    final ToggleButton wf = (ToggleButton)findViewById(R.id.wifi_button); 
    final ToggleButton sb = (ToggleButton)findViewById(R.id.sound_button); 

    // Check Audio 
    AudioManager mAudio = (AudioManager) getSystemService(Activity.AUDIO_SERVICE); 
    soundStatus = mAudio.getRingerMode(); 
    if(soundStatus == AudioManager.RINGER_MODE_NORMAL) 
     sb.setChecked(true);  

    // Check WiFi 
    WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    wifiStatus = wifiMgr.isWifiEnabled(); 
    if(wifiStatus) 
     wf.setChecked(true);  

    sb.setOnClickListener(new OnClickListener() {   
     public void onClick(View v) { 
      try { 
       TextView tv = (TextView) findViewById(R.id.result); 
       AudioManager mAudio = (AudioManager) getSystemService(Activity.AUDIO_SERVICE); 
       if(sb.isChecked()) { 
        mAudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        tv.setText("Ringer set to Normal"); 
       } else { 
        mAudio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
        tv.setText("Ringer set to Silent"); 
       } 
      }catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

    bt.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      try { 
       TextView tv = (TextView) findViewById(R.id.result);    
       if(bt.isChecked()) 
        tv.setText("Bluetooth is On!"); 
       else 
        tv.setText("Bluetooth is Off!"); 
      } catch (Exception e) { 

       e.printStackTrace(); 
      } 

     } 
    }); 

    wf.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      try { 

       TextView tv = (TextView) findViewById(R.id.result); 
       WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
       if(wf.isChecked()) { 
        wifiMgr.setWifiEnabled(true);      
        tv.setText("Wifi is On!");      
       } else { 
        wifiMgr.setWifiEnabled(false); 
        tv.setText("Wifi is Off!");      
       } 
      } catch (Exception e) { 

       e.printStackTrace(); 
      } 

     } 
    }); 

    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

내가 추가 한 다음 권한 : 나는 모토로라 이정표 (안드로이드 2.1) ... 나는 무엇을 놓치고를 사용하고

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 

여기 내 전체 코드는? 아무도이 코드의 잘못된 점을 알려줄 수 있습니까?
미리 감사드립니다. 제안 및 수정.

+0

LogCat이란 무엇입니까? Eclipse에서 'adb logcat', DDMS 또는 DDMS Perspective를 통해 액세스 할 수 있습니다. – CommonsWare

답변

0

더 많은 권한을 추가하여 문제가 해결되었습니다. 같은 문제에 직면하고 사람들을 위해 , 당신은뿐만 아니라 다음과 같은 권한을 추가해야합니다 :

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 

이제,이 외에도 나는 오디오 및 블루투스 액세스를 필요로했다. 그것을 위해 다음을 추가해야합니다 :

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
관련 문제