0
public class AirPlaneModeActivity extends Activity {

Button b;
TimePicker tp;
Calendar cal;
AlarmManager am ;
PendingIntent pi;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b = (Button)findViewById(R.id.button1);
    tp = (TimePicker)findViewById(R.id.timePicker1);
    cal = Calendar.getInstance(Locale.getDefault());
    am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    tp.setIs24HourView(true);        

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            cal.set(Calendar.HOUR_OF_DAY,tp.getCurrentHour());
            cal.set(Calendar.MINUTE,tp.getCurrentMinute());
            cal.set(Calendar.SECOND,0);
        }
    }); 

    pi = PendingIntent.getBroadcast(this, 0, setAPM(), 0);       
    am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pi);        

}
public Intent setAPM(){
    boolean isEnabled = Settings.System.getInt(
              getContentResolver(), 
              Settings.System.AIRPLANE_MODE_ON, 0) == 1;
    // toggle airplane mode
    Settings.System.putInt(getContentResolver(),
            Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);

    // Post an intent to reload
    Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
    intent.putExtra("state", !isEnabled);
    return intent;          
}

}

タイムピッカーから取得した設定時間に飛行機モードを変更したい。

次に、タイムピッカーから魔女のカレンダーに時間を設定しalarmmanager.setます。メソッドの時間を取得しますが、何もしません。

私はインターネット全体を見ていますが、何も見つかりませんでした。私はstackoverflowでこの投稿を見つけましたが、答えはありません(私の下手な英語で申し訳ありません)

4

1 に答える 1

0

私は私のコードでこれを見つけました機内モードを継続的に切り替えます

/** Code snippet in AirplaneModeService*/
@Override
public void onCreate() {
    airplaneModeToggler = new AirplaneModeToggler(this);
    Thread mThread = new Thread(null, airplaneModeToggleTask, "AirplaneModeToggleTask");
    mThread.start();
}

private Runnable airplaneModeToggleTask = new Runnable() {
    @Override
    public void run() {
        airplaneModeToggler.toggle(null);
        AirplaneModeService.this.stopSelf();
    }
};

ここまたはリンクした投稿でわかるように、非同期タスクを実行する必要があると思います。

編集:ここでも見つけました Androidで機内モードを検出するにはどうすればよいですか? 答えでは、それがアクティブ化されているかどうかを知る方法(何かをするかどうか;))

/**
* Gets the state of Airplane Mode.
* 
* @param context
* @return true if enabled.
*/
private static boolean isAirplaneModeOn(Context context) {

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

}

そして最後に、このhttp://dustinbreese.blogspot.com.es/2009/04/andoid-controlling-airplane-mode.htmlを見つけました。必要なものはすべてここにあると思います!

于 2012-06-21T13:17:39.560 に答える