說明:這個例子實現(xiàn)了Android中常見的許多服務,下面是實現(xiàn)的詳細流程
接下來,以源代碼的方式分析這個例子
1.MainActivity--主界面
這個類主要是實現(xiàn)用戶所看到的這個Activity,其中包含了一系列的按鈕,用戶點擊按鈕執(zhí)行相應的動作,所以在這個類中主要是對按鈕的定義和對按鈕綁定相應的監(jiān)聽器,下面是實現(xiàn)的代碼:
package?lovefang.stadyService;
import?android.app.Activity;
import?android.os.Bundle;
import?android.widget.Button;
import?android.view.View;
import?android.content.Intent;
import?android.util.Log;
/**這是使用后臺服務的學習例子*/
public?class?MainStadyServics?extends?Activity?{
????????/**參數(shù)設置*/
????Button?startServiceButton;//?啟動服務按鈕
????Button?shutDownServiceButton;//?關閉服務按鈕
????Button?startBindServiceButton;//?啟動綁定服務按鈕
????Button?sendBroadcast;//?使用廣播
????Button?notificationButton;//?使用通知功能
????Button?alarmButton;//?使用鬧鐘
????Button?handlerButton;//?使用handler
????Button?asyncButton;//?使用異步加載
????Button?phoneStateButton;//?查看手機狀態(tài)
????Button?callphoneButton;//?撥打電話
????Button?vibratorButton;//?使用震動?
????CountService?countService;
????
????@Override
????public?void?onCreate(Bundle?savedInstanceState)?{
????????super.onCreate(savedInstanceState);
????????Log.v("MainStadyServics",?"setContentView");
????????setContentView(R.layout.main);
????????getWidget();
????????regiestListener();
????}
????????/**獲得組件*/
????public?void?getWidget(){
????????startServiceButton?=?(Button)findViewById(R.id.startServerButton);
????????startBindServiceButton?=?(Button)findViewById(R.id.startBindServerButton);
????????shutDownServiceButton?=?(Button)findViewById(R.id.sutdownServerButton);
????????sendBroadcast?=?(Button)findViewById(R.id.sendBroadcast);
????????notificationButton?=?(Button)findViewById(R.id.notification);
????????alarmButton?=?(Button)findViewById(R.id.alarm);
????????handlerButton?=?(Button)findViewById(R.id.handler);
????????asyncButton?=?(Button)findViewById(R.id.async);
????????phoneStateButton?=?(Button)?findViewById(R.id.phonestate);
????????callphoneButton?=?(Button)?findViewById(R.id.callphone);
????????vibratorButton?=?(Button)?findViewById(R.id.vibrator);
????}
????????/**為按鈕添加監(jiān)聽*/
????public?void?regiestListener(){
????????startServiceButton.setOnClickListener(startService);
????????shutDownServiceButton.setOnClickListener(shutdownService);
????????startBindServiceButton.setOnClickListener(startBinderService);
????????sendBroadcast.setOnClickListener(broadcastReceiver);
????????notificationButton.setOnClickListener(notification);
????????alarmButton.setOnClickListener(startAlarm);
????????handlerButton.setOnClickListener(handler);
????????asyncButton.setOnClickListener(async);
????????phoneStateButton.setOnClickListener(phonestate);
????????callphoneButton.setOnClickListener(callphoneEvent);
????????vibratorButton.setOnClickListener(vibrator);
????}
????????/**啟動服務的事件監(jiān)聽*/
????public?Button.OnClickListener?startService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時啟動服務*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,CountService.class);
????????????startService(intent);
????????????Log.v("MainStadyServics",?"start?Service");
????????}
????};
????????/**關閉服務*/
????public?Button.OnClickListener?shutdownService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時啟動服務*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,CountService.class);
????????????????/**退出Activity是,停止服務*/
????????????stopService(intent);
????????????Log.v("MainStadyServics",?"shutDown?serveice");
????????}
????};
????????/**打開綁定服務的Activity*/
????public?Button.OnClickListener?startBinderService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時啟動服務*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,UseBrider.class);
????????????startActivity(intent);
????????????Log.v("MainStadyServics",?"start?Binder?Service");
????????}
????};
????????/**打開廣播學習的按鈕*/
????public?Button.OnClickListener?broadcastReceiver?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,UseBroadcast.class);
????????????startActivity(intent);
????????????Log.v("MainStadyServics","start?broadcast");
????????}
????};
????????/**打開通知*/
????public?Button.OnClickListener?notification?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseNotification.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?Notification");
????????????
????????}
????};
????????/**使用鬧鐘*/
????public?Button.OnClickListener?startAlarm?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseAlarmManager.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?alarm");
????????????
????????}
????};
????public?Button.OnClickListener?handler=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseHandleMessage.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?handle");
????????}
????};
????public?Button.OnClickListener?async=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseAsyncTask.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?handle");
????????}
????};
????public?Button.OnClickListener?phonestate=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UsePhoneState.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?phonestate");
????????}
????};
????public?Button.OnClickListener?callphoneEvent=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseActionCall.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?callphone");
????????}
????};
????public?Button.OnClickListener?vibrator=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????Intent?intent?=?new?Intent(MainStadyServics.this,?UseVibrator.class);
????????????startActivity(intent);
????????????Log.v("MainStadyService?","start?callphone");
????????}
????};
????????/***/
????protected?void?onDestroy(){
????????super.onDestroy();
????????Intent?intent?=?new?Intent(MainStadyServics.this,CountService.class);
????????????/**退出Activity是,停止服務*/
????????stopService(intent);
????}
}?
2.啟動服務按鈕
?
這個類實現(xiàn)的是第一個按鈕的功能,在這個類中新開了一個線程,并每隔一秒打印出一行日志
代碼如下:
?
package?lovefang.stadyService;
/**引入包*/
????import?android.app.Service;//?服務的類
????import?android.os.IBinder;
????import?android.os.Binder;
????import?android.content.Intent;
????import?android.util.Log;
/**計數(shù)的服務*/
????public?class?CountService?extends?Service{
????????????/**創(chuàng)建參數(shù)*/
????????boolean?threadDisable?;
????????int?count;
????????
????????public?IBinder?onBind(Intent?intent){
????????????return?null;
????????}
????????public?void?onCreate(){
????????????super.onCreate();
????????????????/**創(chuàng)建一個線程,每秒計數(shù)器加一,并在控制臺進行Log輸出*/
????????????new?Thread(new?Runnable(){
????????????????public?void?run(){
????????????????????while(!threadDisable){
????????????????????????try{
????????????????????????????Thread.sleep(1000);
????????????????????????}catch(InterruptedException?e){
????????????????????????????
????????????????????????}
????????????????????????count++;
????????????????????????Log.v("CountService","Count?is"+count);
????????????????????}
????????????????}
????????????}).start();
????????}
????????public?void?onDestroy(){
????????????super.onDestroy();
????????????????/**服務停止時,終止計數(shù)進程*/
????????????this.threadDisable?=?true;
????????}
????????public?int?getConunt(){
????????????return?count;
????????}
????????class?ServiceBinder?extends?Binder{
????????????public?CountService?getService(){
????????????????return?CountService.this;
????????????}
????????}
????}?
3.綁定服務
?
服務有兩種實現(xiàn)的方法:
1.startService,啟動服務,這時需要程序員管理服務的生命周期
2.bindService,綁定服務,此時Service與Activity綁定在一起
下面是實現(xiàn)的代碼:
?
package?lovefang.stadyService;
/**引入包*/
????import?android.app.Activity;
????import?android.content.ComponentName;
????import?android.content.Context;
????import?android.content.Intent;
????import?android.content.ServiceConnection;
????import?android.os.Bundle;
????import?android.os.IBinder;
????import?android.util.Log;
/**通過bindService和unBindSerivce的方式啟動和結(jié)束服務*/
????public?class?UseBrider?extends?Activity?{
????????????/**參數(shù)設置*/
????????CountService?countService;
????
????????@Override
????????public?void?onCreate(Bundle?savedInstanceState)?{
????????????super.onCreate(savedInstanceState);
????????????setContentView(new?UseBriderFace(this));
????????????Intent?intent?=?new?Intent(UseBrider.this,CountService.class);
????????????????/**進入Activity開始服務*/
????????????bindService(intent,?conn,?Context.BIND_AUTO_CREATE);
????????????
????????}
????????private?ServiceConnection?conn?=?new?ServiceConnection(){
????????????????/**獲取服務對象時的操作*/?
????????????public?void?onServiceConnected(ComponentName?name,?IBinder?service)?{
????????????????//?TODO?Auto-generated?method?stub
????????????????countService?=?((CountService.ServiceBinder)service).getService();
????????????????
????????????}
????????????????/**無法獲取到服務對象時的操作*/
????????????public?void?onServiceDisconnected(ComponentName?name)?{
????????????????//?TODO?Auto-generated?method?stub
????????????????countService?=null;
????????????}
????????????
????????????
????????};
????????protected?void?onDestroy(){
????????????super.onDestroy();
????????????this.unbindService(conn);
????????????Log.v("MainStadyServics",?"out");
????????}
????}?
4.發(fā)送廣播
?
使用sendBroadcast,向一個Action發(fā)送廣播,并由相應的廣播接收器接收并執(zhí)行相應的動作
實現(xiàn)的代碼如下:
4.1 打開廣播服務
?
package?lovefang.stadyService;
/**引入包*/
????import?android.view.View;
????import?android.os.Bundle;
????import?android.app.Activity;
????import?android.content.Intent;
????import?android.widget.Button;
/**使用Broadcast,這是一個發(fā)送廣播的類*/
????public?class?UseBroadcast?extends?Activity{
????????????/**創(chuàng)建參數(shù)*/
????????private?Button?sendBroadcast;
????????????/**創(chuàng)建Activity*/
????????public?void?onCreate(Bundle?savedInstanceState){
????????????super.onCreate(savedInstanceState);
????????????setContentView(R.layout.broadcast);//?使用布局文件
????????????getView();
????????????sendBroadcast.setOnClickListener(sendBroadcastClick);//?添加事件監(jiān)聽
????????}
????????public?void?getView(){
????????????sendBroadcast?=?(Button)findViewById(R.id.sendBroadcast);
????????}
????????????/**創(chuàng)建事件監(jiān)聽*/
????????public?Button.OnClickListener?sendBroadcastClick?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????Intent?intent?=?new?Intent();//?創(chuàng)建意圖
????????????????intent.putExtra("CONTENT",??"This?is?a?Braodcast?demo");//?設置廣播的內(nèi)容
????????????????intent.setAction("lovefang.stadyService");//?設置廣播的Action
????????????????sendBroadcast(intent);
????????????}
????????};
????????
????}?
4.2 處理廣播消息
package?lovefang.stadyService;
/***/
????import?android.content.BroadcastReceiver;
????import?android.content.Context;
????import?android.content.Intent;
????import?android.util.Log;
/**這是一個接收廣播的類*/
????public?class?UseBroadcastReceiver?extends?BroadcastReceiver{
????????public?void?onReceive(Context?context,?Intent?intent){
????????????Log.v("UseBroadcastReceiver",?"I?get?a?message");
????????}
????}
5.Notification
這個稱之為通知,顯示在手機的通知欄,用戶可以清除,可以點擊
實現(xiàn)的代碼如下:
?
package?lovefang.stadyService;
????import?android.content.Intent;
????import?android.os.Bundle;
????import?android.app.Activity;
????import?android.app.Notification;
????import?android.app.NotificationManager;
????import?android.app.PendingIntent;
????import?android.net.Uri;
????import?android.media.RingtoneManager;
????import?android.widget.Button;
????import?android.view.View;
/**使用notification*/
????public?class?UseNotification?extends?Activity?{
????????????/**創(chuàng)建組件*/
????????private?Button?textButton;
????????private?Button?soundButton;//?聲音通知
????????private?Button?vibrateButton;//?震動通知
????????private?Button?ledButton;//?led通知
????????private?Button?offButton;//?關閉通知
????????NotificationManager?notificationManager;
????????????/**創(chuàng)建Activity*/
????????public?void?onCreate(Bundle?savedInstanceState){
????????????super.onCreate(savedInstanceState);
????????????setContentView(R.layout.notification);
????????????getComment();
????????????registerComment();
????????}
????????????/**獲取對象*/
????????public?void?getComment(){
????????????????/**獲取Notification對象*/
????????????notificationManager?=?(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
????????????textButton?=?(Button)findViewById(R.id.notificationMessage);
????????????soundButton?=(Button)findViewById(R.id.notificationSound);
????????????vibrateButton?=?(Button)findViewById(R.id.notificationVibrate);
????????????ledButton?=?(Button)findViewById(R.id.notificationLED);
????????????offButton?=?(Button)findViewById(R.id.offnotification);
????????}
????????????/**注冊對象*/
????????public?void?registerComment(){
????????????textButton.setOnClickListener(notificationMessage);
????????????soundButton.setOnClickListener(notificationSound);
????????????vibrateButton.setOnClickListener(notificationVibrate);
????????????ledButton.setOnClickListener(notificationLed);
????????????offButton.setOnClickListener(notificationOff);
????????}
????????public?Button.OnClickListener?notificationMessage?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????Notification?notification?=?new?Notification();//?創(chuàng)建Notification對象
????????????????notification.icon?=?R.drawable.icon;
????????????????notification.tickerText?=?"This?is?text?notication";//?設置通知消息
????????????????????/**單擊通知后的Intent,此例子單擊后還是在當前頁面*/
????????????????PendingIntent?intent?=?PendingIntent
????????????????????.getActivity(UseNotification.this,
????????????????????????????0,?new?Intent(UseNotification.this,UseNotification.class)
????????????????????????????,?0);
????????????????????/**設置通知消息*/
????????????????notification.setLatestEventInfo(UseNotification.this
????????????????????????,"Notification","Content?of?Notification?Demo",intent);
????????????????????/**執(zhí)行通知*/
????????????????notificationManager.notify(0,?notification);
????????????}
????????};
????????public?Button.OnClickListener?notificationSound?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????????/**創(chuàng)建通知對象*/
????????????????Notification?notification?=?new?Notification();
????????????????????/**獲取系統(tǒng)當前聲音*/
????????????????String?ringName?=?RingtoneManager.getActualDefaultRingtoneUri(
????????????????????????UseNotification.this,?RingtoneManager.TYPE_RINGTONE)
????????????????????????.toString();
????????????????????/**設置系統(tǒng)當前鈴聲為此通知的鈴聲*/
????????????????notification.sound?=?Uri.parse(ringName);
????????????????????/**執(zhí)行通知*/
????????????????notificationManager.notify(0,notification);
????????????}
????????};
????????????/**震動通知*/
????????public?Button.OnClickListener?notificationVibrate?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????Notification?notification?=?new?Notification();//?創(chuàng)建Notification對象
????????????????notification.vibrate?=?new?long[]?{0,?100,?200,?300};//?設置通知震動模式
????????????????notificationManager.notify(0,notification);//?執(zhí)行通知
????????????}
????????};
????????????/**LED通知*/
????????public?Button.OnClickListener?notificationLed?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????Notification?notification?=?new?Notification();//?創(chuàng)建Notification對象
????????????????notification.ledOnMS?=?300;//?設置led開始閃光的時間
????????????????notification.ledOffMS?=?1000;//?設置關閉時的閃光時間
????????????????notificationManager.notify(0,notification);//?執(zhí)行通知
????????????}
????????};
????????????/**關閉通知*/
????????public?Button.OnClickListener?notificationOff?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????notificationManager.cancel(0);//?關閉通知
????????????}
????????};
????}?
6.Alarm
?
鬧鐘服務
?
package?lovefang.stadyService;
import?android.app.Activity;
import?android.os.Bundle;
import?android.widget.Button;
import?android.view.View;
import?android.app.AlarmManager;
import?java.util.Calendar;
public?class?UseAlarmManager?extends?Activity?{
????????/**創(chuàng)建參數(shù)*/
????private?Button?startAlarm;
????private?Button?shutdownAlarm;
????private?AlarmManager?alarm;
????
????????/**創(chuàng)建Activity*/
????public?void?onCreate(Bundle?savedInstanceState){
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.usealarmmanager);
????????getWidget();
????}
????public?void?getWidget(){
????????startAlarm?=?(Button)findViewById(R.id.startAlarm);
????????shutdownAlarm?=?(Button)findViewById(R.id.shutDowntAlarm);
????????alarm?=?(AlarmManager)getSystemService(ALARM_SERVICE);//?獲取AlarmManager
????}
????public?void?registerWidget(){
????????startAlarm.setOnClickListener(startAlarms);
????????shutdownAlarm.setOnClickListener(shutdownAlarms);
????}
????????/**啟動鬧鐘*/
????public?Button.OnClickListener?startAlarms?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????//?設置10秒后出發(fā)鬧鐘
????????????Calendar?calendar?=?Calendar.getInstance();
????????????calendar.setTimeInMillis(System.currentTimeMillis());//?設置calendar的時間
????????????calendar.add(Calendar.SECOND,?10);
????????????
????????????alarm.set(AlarmManager.RTC_WAKEUP,?calendar.getTimeInMillis(),?null);
????????}
????};
????public?Button.OnClickListener?shutdownAlarms?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????alarm.cancel(null);
????????}
????};
}
7.獲取手機的狀態(tài)
這個功能實現(xiàn)的是獲取用戶手機的一些定義的信息
package?lovefang.stadyService;
/**引入包*/
????import?android.os.Bundle;
????import?android.app.Activity;
????import?android.app.Service;
????import?android.view.View;
????import?android.widget.Button;
????import?android.widget.TextView;
????import?android.content.ContentResolver;//This?class?provides?applications?access?to?the?content?model.
????import?android.telephony.TelephonyManager;
????import?android.util.Log;
/**獲取手機的狀態(tài)*/
????public?class?UsePhoneState?extends?Activity{
????????????/**創(chuàng)建參數(shù)*/
????????private?ContentResolver?cr;
????????private?Button?getStateButton;//?用來獲取用戶的手機狀態(tài)
????????????/**創(chuàng)建Activity*/
????????public?void?onCreate(Bundle?savedInstanceState){
????????????super.onCreate(savedInstanceState);
????????????setContentView(R.layout.usephonestate);
????????????
????????????cr?=?getContentResolver();
????????????Log.v("UsePhonestate","cr?=?getContentResolver()");
????????????Log.v("UsePhonestate","setContentView");
????????????getStateButton?=?(Button)?findViewById(R.id.button_getphonestate);
????????????Log.v("UsePhonestate","getStateButton");
????????????getStateButton.setOnClickListener(getState);
????????????Log.v("UsePhonestate","getStateButton.setOnClickListener");
????????}
????????private?Button.OnClickListener?getState?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????????/**獲得TelephonyManager對象*/
????????????????TelephonyManager?telephonyManager?=?(TelephonyManager)?getSystemService(Service.TELEPHONY_SERVICE);
????????????????????/**獲取電信網(wǎng)絡級別*/
????????????????String?teleCode?=?telephonyManager.getNetworkCountryIso();
????????????????????/**獲取電信網(wǎng)絡公司代碼*/
????????????????String?teleComCode?=?telephonyManager.getNetworkOperator();
????????????????????/**獲取電信網(wǎng)絡公司名稱*/
????????????????String?teleComName?=?telephonyManager.getNetworkOperatorName();
????????????????????/**獲取行動通信類型*/
????????????????int?TypeCode?=?telephonyManager.getPhoneType();
????????????????
????????????????String?type?=?"";
????????????????
????????????????switch(TypeCode){
????????????????????case?TelephonyManager.PHONE_TYPE_NONE:
????????????????????????type?=?"PHONE_TYPE_NONE";
????????????????????????break;
????????????????????case?TelephonyManager.PHONE_TYPE_GSM:
????????????????????????type?=?"PHONE_TYPE_GSM";
????????????????????????break;
????????????????????case?TelephonyManager.PHONE_TYPE_CDMA:
????????????????????????type?=?"PHONE_TYPE_CDMA";
????????????????????????break;
????????????????}
????????????????????/**獲取網(wǎng)絡類型*/
????????????????int?netTypeCode?=?telephonyManager.getNetworkType();
????????????????String?netType?=?"NETWORK_TYPE_UNKNOW";
????????????????switch(netTypeCode){
????????????????????case?TelephonyManager.NETWORK_TYPE_1xRTT:
????????????????????????netType?=?"NETWORK_TYPE_1xRTT";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_CDMA:
????????????????????????netType?=?"NETWORK_TYPE_CDMA";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_EDGE:
????????????????????????netType?=?"NETWORK_TYPE_EDGE";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_EVDO_0:
????????????????????????netType?=?"NETWORK_TYPE_EVDO_0";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_EVDO_A:
????????????????????????netType?=?"NETWORK_TYPE_EVDO_A";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_GPRS:
????????????????????????netType?=?"NETWORK_TYPE_GPRS";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_HSDPA:
????????????????????????netType?=?"NETWORK_TYPE_HSDPA";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_HSPA:
????????????????????????netType?=?"NETWORK_TYPE_HSPA";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_HSUPA:
????????????????????????netType?=?"NETWORK_TYPE_HSUPA";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_IDEN:
????????????????????????netType?=?"NETWORK_TYPE_IDEN";
????????????????????????break;
????????????????????case?TelephonyManager.NETWORK_TYPE_UMTS:
????????????????????????netType?=?"NETWORK_TYPE_UMTS";
????????????????????????break;
????????????????????default:
????????????????????????break;
????????????????}
????????????????
????????????????????/**獲取漫游狀態(tài)*/
????????????????boolean?roamStatusCode?=?telephonyManager.isNetworkRoaming();
????????????????String?roamStatus?=?"NOT?ROAMINF";
????????????????if(roamStatusCode){
????????????????????roamStatus?=?"ROAMING";
????????????????}
????????????????
????????????????????/**獲取手機唯一標識*/
????????????????String?imei?=?telephonyManager.getDeviceId();
????????????????????/**獲取手機IMEI?SV*/
????????????????String?imeiSV?=?telephonyManager.getDeviceSoftwareVersion();
????????????????????/**獲取手機IMSI*/
????????????????String?imsi?=?telephonyManager.getSubscriberId();
????????????????
????????????????????/**藍牙服務*/
????????????????String?statusCode?=?android.provider.Settings.System.getString(cr,
????????????????????????android.provider.Settings.System.BLUETOOTH_ON);
????????????????String?bulettothStatus?=?"";
????????????????if(statusCode.equals("1")){
????????????????????bulettothStatus?=?"ENABLE";
????????????????}else{
????????????????????bulettothStatus?=?"DISABLE";
????????????????}
????????????????
????????????????????/**飛行模式是否打開*/
????????????????statusCode?=?android.provider.Settings.System.getString(cr,
????????????????????????android.provider.Settings.System.AIRPLANE_MODE_ON);
????????????????
????????????????String?AirplaneStatus?=?"";
????????????????if(statusCode.equals("1")){
????????????????????AirplaneStatus?=?"ENABLE";
????????????????}else{
????????????????????AirplaneStatus?=?"DISABLE";
????????????????}
????????????????
????????????????????/**數(shù)據(jù)漫游模式是否打開*/
????????????????statusCode?=?android.provider.Settings.System.getString(cr,
????????????????????????android.provider.Settings.System.DATA_ROAMING);
????????????????String?dataRoamStatus?=?"";
????????????????if(statusCode.equals("1")){
????????????????????dataRoamStatus?=?"ENABLE";
????????????????}else{
????????????????????dataRoamStatus?=?"DISABLE";
????????????????}
????????????????TextView?txt?=?(TextView)?findViewById(R.id.text_showphonestate);
????????????????StringBuilder?sb?=?new?StringBuilder();
????????????????sb.append("teleCode:?"+teleCode+"n");
????????????????sb.append("teleComCode:?"+teleComCode+"n");
????????????????sb.append("teleComName:?"+teleComName+"n");
????????????????sb.append("type:?"+type+"n");
????????????????sb.append("netType:?"+netType+"n");
????????????????sb.append("roamStatus:?"+roamStatus+"n");
????????????????sb.append("imei:?"+imei+"n");
????????????????sb.append("imeiSV:?"+imeiSV+"n");
????????????????sb.append("imsi:?"+imsi+"n");
????????????????sb.append("bulettothStatus:?"+bulettothStatus+"n");
????????????????sb.append("AirplaneStatus:?"+AirplaneStatus+"n");
????????????????sb.append("dataRoamStatus:?"+dataRoamStatus+"n");
????????????????
????????????????txt.setText(sb.toString());
????????????}
????????};
????}?
8.Vibrator
?
震動功能,實現(xiàn)對手機震動的管理
?
package?lovefang.stadyService;
/***/
????import?android.os.Bundle;
????import?android.os.Vibrator;
????import?android.app.Activity;
????import?android.view.View;
????import?android.content.Context;
????import?android.widget.Button;
/**如何實現(xiàn)手機的震動提示Vibrator*/
????public?class?UseVibrator?extends?Activity{
????????????/***/
????????private?Button?vibrator_1_Button;
????????private?Button?vibrator_2_Button;
????????private?Button?vibrator_3_Button;
????????private?Vibrator?vibrator;
????????????/***/
????????public?void?onCreate(Bundle?savedInstanceState){
????????????super.onCreate(savedInstanceState);
????????????setContentView(R.layout.use_vibrator);
????????????vibrator?=?(Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
????????????getWidget();
????????????registerWidget();
????????}
????????
????????public?void?getWidget(){
????????????vibrator_1_Button?=?(Button)?findViewById(R.id.button_vibrator_1);
????????????vibrator_2_Button?=?(Button)?findViewById(R.id.button_vibrator_2);
????????????vibrator_3_Button?=?(Button)?findViewById(R.id.button_vibrator_3);
????????}
????????
????????public?void?registerWidget(){
????????????vibrator_1_Button.setOnClickListener(vibrator_1);
????????????vibrator_2_Button.setOnClickListener(vibrator_2);
????????????vibrator_3_Button.setOnClickListener(vibrator_3);
????????}
????????????/**震動一次*/
????????public?Button.OnClickListener?vibrator_1?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????????/**long參數(shù)數(shù)組里大參數(shù)的含義*/
????????????????????/**第一個參數(shù)表示等待100毫秒后開始震動*/
????????????????????/**第二個參數(shù)表示震動100毫秒后停止震動*/
????????????????vibrator.vibrate(new?long[]{100,100},?0);
????????????}
????????};
????????????/**震動兩次*/
????????public?Button.OnClickListener?vibrator_2?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????vibrator.vibrate(new?long[]{1000,3000,1000,3000},?0);
????????????}
????????};
????????????/**震動三次*/
????????public?Button.OnClickListener?vibrator_3?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????vibrator.vibrate(new?long[]{1000,1000,1000,2000,1000,300},?0);
????????????}
????????};
????}




