Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> 開啟/關閉/監聽 飛行模式

開啟/關閉/監聽 飛行模式

編輯:初級開發

不多說,上圖,見代碼。

 01_JPG_thumb.jpg

  1. package lab.sodino.airplane;
     

  2.  
  3. import Java.text.SimpleDateFormat;
     
  4. import Java.util.Calendar;
     

  5.  
  6. import android.app.Activity;
     
  7. import android.content.BroadcastReceiver;
     
  8. import android.content.Context;
     
  9. import android.content.Intent;
     
  10. import android.content.IntentFilter;
     
  11. import android.os.Bundle;
     
  12. import android.provider.Settings;
     
  13. import android.util.Log;
     
  14. import android.view.VIEw;
     
  15. import android.widget.Button;
     
  16. import android.widget.TextVIEw;
     
  17. import android.widget.Toast;
     

  18.  
  19. /**
     
  20. * @author Sodino Email:[email protected]
     
  21. * */
     
  22. public class AirPlaneAct extends Activity {
     
  23.         private TextVIEw txtInfo;
     

  24.  
  25.         public void onCreate(Bundle savedInstanceState) {
     
  26.                 super.onCreate(savedInstanceState);
     
  27.                 setContentVIEw(R.layout.main);
     
  28.                 txtInfo = (TextView) findVIEwById(R.id.txtInfo);
     
  29.                 Button btnIsAirPlane = (Button) findVIEwById(R.id.btnIsAirPlane);
     
  30.                 btnIsAirPlane.setOnClickListener(new Button.OnClickListener() {
     
  31.                         public void onClick(View vIEw) {
     
  32.                                 isAirplaneModeOn();
     
  33.                         }
     
  34.                 });
     
  35.                 final Button btnSetAirPlane = (Button) findVIEwById(R.id.btnSetAirPlane);
     
  36.                 btnSetAirPlane.setOnClickListener(new Button.OnClickListener() {
     
  37.                         public void onClick(View vIEw) {
     
  38.                                 setAirplaneMode(true);
     
  39.                         }
     
  40.                 });
     
  41.                 final Button btnCancelAirPlane = (Button) findVIEwById(R.id.btnCancelAirPlane);
     
  42.                 btnCancelAirPlane.setOnClickListener(new Button.OnClickListener() {
     
  43.                         public void onClick(View vIEw) {
     
  44.                                 setAirplaneMode(false);
     
  45.                         }
     
  46.                 });
     
  47.                 IntentFilter intentFilter = new IntentFilter("android.intent.action.SERVICE_STATE");
     
  48.                 BroadcastReceiver receiver = new BroadcastReceiver() {
     
  49.                         @Override
     
  50.                         public void onReceive(Context context, Intent intent) {
     
  51.                                 Log.d("android_INFO", "Service state changed");
     
  52.                                 Bundle bundle = intent.getExtras();
     
  53.                                 if (bundle != null) {
     
  54.                                         txtInfo.append(formateToLogTime(System.currentTimeMillis()) + " Service state changed action="
     
  55.                                                         + intent.getAction() + "\n");
     
  56.                                         /**
     
  57.                                          * Set<String> set = bundle.keySet();<br/>
     
  58.                                          * key=manual value=0 <br/>
     
  59.                                          * key=cdmaRoamingIndicator value=-1 Integer<br/>
     
  60.                                          * key=Operator-numeric value=0<br/>
     
  61.                                          * key=CSSIndicator value=0 Boolean<br/>
     
  62.                                          * key=Operator-alpha-long value=0<br/>
     
  63.                                          * key=networkId value=-1<br/>
     
  64.                                          * key=state value=0 Integer<br/>
     
  65.                                          * key=emergencyOnly value=0 Boolean<br/>
     
  66.                                          * key=systemId value=-1 Integer<br/>
     
  67.                                          * key=roaming value=0 Boolean<br/>
     
  68.                                          * key=Operator-alpha-short value=0<br/>
     
  69.                                          * key=cdmaDefaultRoamingIndicator value=-1 Integer<br/>
     
  70.                                          * key=radioTechnology value=2 Integer<br/>
     
  71.                                          */
     
  72.                                         int state = bundle.getInt("state");
     
  73.                                         Log.d("android_INFO", "state = " + state);
     
  74.                                         txtInfo.append(formateToLogTime(System.currentTimeMillis()) + " state = " + state);
     
  75.                                         switch (state) {
     
  76.                                         case 0x00:
     
  77.                                                 Log.d("android_INFO", "Connect the net successfully.");
     
  78.                                                 txtInfo.append(" Connect the net successfully.");
     
  79.                                                 btnSetAirPlane.setEnabled(true);
     
  80.                                                 btnCancelAirPlane.setEnabled(false);
     
  81.                                                 break;
     
  82.                                         case 0x01:
     
  83.                                                 Log.d("android_INFO", "Try to connect the net.");
     
  84.                                                 txtInfo.append(" Try to connect the net.");
     
  85.                                                 btnSetAirPlane.setEnabled(false);
     
  86.                                                 btnCancelAirPlane.setEnabled(true);
     
  87.                                                 break;
     
  88.                                         case 0x03:
     
  89.                                                 Log.d("android_INFO", "Set AirPlaneMode Successful.");
     
  90.                                                 txtInfo.append(" Set AirPlaneMode Successful.");
     
  91.                                                 btnSetAirPlane.setEnabled(false);
     
  92.                                                 btnCancelAirPlane.setEnabled(true);
     
  93.                                                 break;
     
  94.                                         }
     
  95.                                         txtInfo.append("\n");
     
  96.                                 } else {
     
  97.                                         Log.d("android_INFO", "bundle is null");
     
  98.                                 }
     
  99.                         }
     
  100.                 };
     
  101.                 registerReceiver(receiver, intentFilter);
     
  102.         }
     

  103.  
  104.         private void isAirplaneModeOn() {
     
  105.                 // 返回值是1時表示處於飛行模式
     
  106.                 int modeIdx = Settings.System.getInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
     
  107.                 boolean isEnabled = (modeIdx == 1);
     
  108.                 txtInfo.append(formateToLogTime(System.currentTimeMillis()) + " AirPlaneMode " + isEnabled + "\n");
     
  109.         }
     

  110.  
  111.         private void setAirplaneMode(boolean setAirPlane) {
     
  112.                 Settings.System.putInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1 : 0);
     
  113.                 // 廣播飛行模式信號的改變,讓相應的程序可以處理。
     
  114.                 // 不發送廣播時,在非飛行模式下,android 2.2.1上測試關閉了Wifi,不關閉正常的通話網絡(如GMS/GPRS等)。
     
  115.                 // 不發送廣播時,在飛行模式下,android 2.2.1上測試無法關閉飛行模式。
     
  116.                 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
     
  117.                 // intent.putExtra("Sponsor", "Sodino");
     
  118.                 sendBroadcast(intent);
     
  119.                 Toast toast = Toast.makeText(this, "飛行模式啟動與關閉需要一定的時間,請耐心等待", Toast.LENGTH_LONG);
     
  120.                 toast.show();
     
  121.         }
     

  122.  
  123.         /**
     
  124.          * 將長整型時間數字轉為字符串。
     
  125.          * 
     
  126.          * @return 返回格式為: 22:15:09的時間
     
  127.          */
     
  128.         public static String formateToLogTime(long time) {
     
  129.                 Calendar calendar = Calendar.getInstance();
     
  130.                 calendar.setTimeInMillis(time);
     
  131.                 SimpleDateFormat simpleDF = new SimpleDateFormat("HH:mm:ss");
     
  132.                 String logTime = simpleDF.format(calendar.getTime());
     
  133.                 return logTime;
     
  134.         }
     
  135. }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved