2011-08-17 3 views
1

전력을 절약하기 위해 전화를 비행기 모드로 설정하는 코드를 작성했습니다. 이 장치는 인도네시아의 한 마을에있는 일부 센서의 데이터를 전송하기 위해 WiFi 핫스팟으로 사용됩니다. 센서는 데이터를 동시에 전송하므로 비행기 모드에서 자정에 5 분 동안 나와 비행기 모드로 다시 들어가야합니다.비행기 모드 설정이 완전히 작동하지 않습니다.

셀룰러 라디오가 꺼지지 않고 비행기 아이콘이 나타나지 않는 것이 문제입니다. 전화기가 airplane_mode를 on으로보고하지만, 여전히 전화를 걸 수 있습니다. 시장에있는 다른 위젯들은 더 나은 운임을 내지 못하는 것 같습니다. "비행기 모드 Wi-Fi 도구"를 사용해 보았습니다. 그것도 비행기의 아이콘을 표시하거나 셀 라디오를 사용하지 못하게합니다. LogCat을보고 기기 설정을 사용하여 비행기 모드로 전환하면 프로그램에서 시도 할 때보 다 훨씬 더 많은 일이 발생하고 있음을 알 수 있습니다.

드로이드에서 내 프로그램을로드하면이 코드는 예상대로 작동합니다. AIRPLANE_MODE_RADIOScell, bluetooth, wifi으로 설정됩니다.

-Froyo 2.2 빌드 FROYO.UYJP2 -Froyo 2.2.1 빌드 FROYO.UYJPE

한 가지 흥미로운 보조 노트 :

기분을 상하게하는 장치가 삼성 갤럭시 5, I5500은 테스트 I 프로그램의 경우 비행기 모드를 설정 한 다음 기기의 전원을 껐다 켭니다. 전체 비행기 모드로 들어오고 수신 전화를 거절합니다.

다른 기기에서 이와 유사한 이야기가 있습니까? 특별히 셀을 끌 수있는 방법이 있습니까?

public static void setAirplaneMode(Context context, boolean status) { 

    boolean isAM = Settings.System.getInt(context.getContentResolver(), 
      Settings.System.AIRPLANE_MODE_ON, 0) != 0; 

    String radios = Settings.System.getString(context.getContentResolver(), 
      Settings.System.AIRPLANE_MODE_RADIOS); 

    //This line is reporting all radios affected but annunciator does not seem to think so. Does not show airplane 
    Wake.logger("Airplane mode is: " + isAM + " changing to " + status + " For radios: " + radios, false); 

    // It appears Airplane mode should only be toggled. Don't reset to 
    // current state. 
    if (isAM && !status) { 
     Settings.System.putInt(context.getContentResolver(), 
       Settings.System.AIRPLANE_MODE_ON, 0); 
     Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); 
     intent.putExtra("state", 0); 
     context.sendBroadcast(intent); 
     return; 
    } 
    if (!isAM && status) { 
     Settings.System.putInt(context.getContentResolver(), 
       Settings.System.AIRPLANE_MODE_ON, 1); 
     Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); 
     intent.putExtra("state", 1); 
     context.sendBroadcast(intent); 
     return; 
    } 
} 
+0

그렇다면 비행기 모드를 설정 한 다음 작동하는 전화기를 다시 시작한다고 말하는 것입니까? 이 장치는 특정 소리를 내고, 해결 방법은 간단합니다. 휴대 전화가 다시 켜진 후 앱을 다시 시작하는 브로드 캐스트 수신기를 가질 수 있습니다. – Blundell

+0

수정. 그러나 장치는 무인 상태로 유지됩니다. 전원이없는 위치에서 설정된 시간에 데이터를 릴레이합니다. 대형 배터리 나 저렴한 태양열을 사용합니다. 주기적으로 전원을 켜도록 장치를 구성 할 수 있습니까? 나는 USB를 통해 하루 10 분 동안 전원을 공급하여 전화를 시작하고 중지 할 수 있다고 생각했다. 그래도 작동하지 않습니다. 어쨌든 나는 내 문제를 생각했다. 답변을 참조하십시오. –

답변

4

클래식 비트 트위스터 오류입니다. 브로드 캐스트 인 텐트의 추가 데이터 인수는 1/0이 아닌 true/false가되어야합니다. 어!

intent.putExtra("state", true); //Not 1!! 

하나의 전화기는 다른 것이 작동하지 않았습니다. 이제 둘 다 그렇습니다.

+0

아, 고마워! 다른 모든 질문은 잘못되었으므로, int가 아닌 부울이어야합니다! – user705142

관련 문제