一個(gè)Demo學(xué)完Android中所有的服務(wù)
說(shuō)明:這個(gè)例子實(shí)現(xiàn)了Android中常見(jiàn)的許多服務(wù),下面是實(shí)現(xiàn)的詳細(xì)流程
接下來(lái),以源代碼的方式分析這個(gè)例子
1.MainActivity--主界面
這個(gè)類(lèi)主要是實(shí)現(xiàn)用戶所看到的這個(gè)Activity,其中包含了一系列的按鈕,用戶點(diǎn)擊按鈕執(zhí)行相應(yīng)的動(dòng)作,所以在這個(gè)類(lèi)中主要是對(duì)按鈕的定義和對(duì)按鈕綁定相應(yīng)的監(jiān)聽(tīng)器,下面是實(shí)現(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;
/**這是使用后臺(tái)服務(wù)的學(xué)習(xí)例子*/
public?class?MainStadyServics?extends?Activity?{
????????/**參數(shù)設(shè)置*/
????Button?startServiceButton;//?啟動(dòng)服務(wù)按鈕
????Button?shutDownServiceButton;//?關(guān)閉服務(wù)按鈕
????Button?startBindServiceButton;//?啟動(dòng)綁定服務(wù)按鈕
????Button?sendBroadcast;//?使用廣播
????Button?notificationButton;//?使用通知功能
????Button?alarmButton;//?使用鬧鐘
????Button?handlerButton;//?使用handler
????Button?asyncButton;//?使用異步加載
????Button?phoneStateButton;//?查看手機(jī)狀態(tài)
????Button?callphoneButton;//?撥打電話
????Button?vibratorButton;//?使用震動(dòng)?
????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)聽(tīng)*/
????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);
????}
????????/**啟動(dòng)服務(wù)的事件監(jiān)聽(tīng)*/
????public?Button.OnClickListener?startService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時(shí)啟動(dòng)服務(wù)*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,CountService.class);
????????????startService(intent);
????????????Log.v("MainStadyServics",?"start?Service");
????????}
????};
????????/**關(guān)閉服務(wù)*/
????public?Button.OnClickListener?shutdownService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時(shí)啟動(dòng)服務(wù)*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,CountService.class);
????????????????/**退出Activity是,停止服務(wù)*/
????????????stopService(intent);
????????????Log.v("MainStadyServics",?"shutDown?serveice");
????????}
????};
????????/**打開(kāi)綁定服務(wù)的Activity*/
????public?Button.OnClickListener?startBinderService?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????/**單擊按鈕時(shí)啟動(dòng)服務(wù)*/
????????????Intent?intent?=?new?Intent(MainStadyServics.this,UseBrider.class);
????????????startActivity(intent);
????????????Log.v("MainStadyServics",?"start?Binder?Service");
????????}
????};
????????/**打開(kāi)廣播學(xué)習(xí)的按鈕*/
????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");
????????}
????};
????????/**打開(kāi)通知*/
????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是,停止服務(wù)*/
????????stopService(intent);
????}
}?
2.啟動(dòng)服務(wù)按鈕
?
這個(gè)類(lèi)實(shí)現(xiàn)的是第一個(gè)按鈕的功能,在這個(gè)類(lèi)中新開(kāi)了一個(gè)線程,并每隔一秒打印出一行日志
代碼如下:
?
package?lovefang.stadyService;
/**引入包*/
????import?android.app.Service;//?服務(wù)的類(lèi)
????import?android.os.IBinder;
????import?android.os.Binder;
????import?android.content.Intent;
????import?android.util.Log;
/**計(jì)數(shù)的服務(wù)*/
????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)建一個(gè)線程,每秒計(jì)數(shù)器加一,并在控制臺(tái)進(jìn)行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();
????????????????/**服務(wù)停止時(shí),終止計(jì)數(shù)進(jìn)程*/
????????????this.threadDisable?=?true;
????????}
????????public?int?getConunt(){
????????????return?count;
????????}
????????class?ServiceBinder?extends?Binder{
????????????public?CountService?getService(){
????????????????return?CountService.this;
????????????}
????????}
????}?
3.綁定服務(wù)
?
服務(wù)有兩種實(shí)現(xiàn)的方法:
1.startService,啟動(dòng)服務(wù),這時(shí)需要程序員管理服務(wù)的生命周期
2.bindService,綁定服務(wù),此時(shí)Service與Activity綁定在一起
下面是實(shí)現(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;
/**通過(guò)bindService和unBindSerivce的方式啟動(dòng)和結(jié)束服務(wù)*/
????public?class?UseBrider?extends?Activity?{
????????????/**參數(shù)設(shè)置*/
????????CountService?countService;
????
????????@Override
????????public?void?onCreate(Bundle?savedInstanceState)?{
????????????super.onCreate(savedInstanceState);
????????????setContentView(new?UseBriderFace(this));
????????????Intent?intent?=?new?Intent(UseBrider.this,CountService.class);
????????????????/**進(jìn)入Activity開(kāi)始服務(wù)*/
????????????bindService(intent,?conn,?Context.BIND_AUTO_CREATE);
????????????
????????}
????????private?ServiceConnection?conn?=?new?ServiceConnection(){
????????????????/**獲取服務(wù)對(duì)象時(shí)的操作*/?
????????????public?void?onServiceConnected(ComponentName?name,?IBinder?service)?{
????????????????//?TODO?Auto-generated?method?stub
????????????????countService?=?((CountService.ServiceBinder)service).getService();
????????????????
????????????}
????????????????/**無(wú)法獲取到服務(wù)對(duì)象時(shí)的操作*/
????????????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,向一個(gè)Action發(fā)送廣播,并由相應(yīng)的廣播接收器接收并執(zhí)行相應(yīng)的動(dòng)作
實(shí)現(xiàn)的代碼如下:
4.1 打開(kāi)廣播服務(wù)
?
package?lovefang.stadyService;
/**引入包*/
????import?android.view.View;
????import?android.os.Bundle;
????import?android.app.Activity;
????import?android.content.Intent;
????import?android.widget.Button;
/**使用Broadcast,這是一個(gè)發(fā)送廣播的類(lèi)*/
????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)聽(tīng)
????????}
????????public?void?getView(){
????????????sendBroadcast?=?(Button)findViewById(R.id.sendBroadcast);
????????}
????????????/**創(chuàng)建事件監(jiān)聽(tīng)*/
????????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");//?設(shè)置廣播的內(nèi)容
????????????????intent.setAction("lovefang.stadyService");//?設(shè)置廣播的Action
????????????????sendBroadcast(intent);
????????????}
????????};
????????
????}?
4.2 處理廣播消息
package?lovefang.stadyService;
/***/
????import?android.content.BroadcastReceiver;
????import?android.content.Context;
????import?android.content.Intent;
????import?android.util.Log;
/**這是一個(gè)接收廣播的類(lèi)*/
????public?class?UseBroadcastReceiver?extends?BroadcastReceiver{
????????public?void?onReceive(Context?context,?Intent?intent){
????????????Log.v("UseBroadcastReceiver",?"I?get?a?message");
????????}
????}
5.Notification
這個(gè)稱(chēng)之為通知,顯示在手機(jī)的通知欄,用戶可以清除,可以點(diǎn)擊
實(shí)現(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;//?震動(dòng)通知
????????private?Button?ledButton;//?led通知
????????private?Button?offButton;//?關(guān)閉通知
????????NotificationManager?notificationManager;
????????????/**創(chuàng)建Activity*/
????????public?void?onCreate(Bundle?savedInstanceState){
????????????super.onCreate(savedInstanceState);
????????????setContentView(R.layout.notification);
????????????getComment();
????????????registerComment();
????????}
????????????/**獲取對(duì)象*/
????????public?void?getComment(){
????????????????/**獲取Notification對(duì)象*/
????????????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);
????????}
????????????/**注冊(cè)對(duì)象*/
????????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對(duì)象
????????????????notification.icon?=?R.drawable.icon;
????????????????notification.tickerText?=?"This?is?text?notication";//?設(shè)置通知消息
????????????????????/**單擊通知后的Intent,此例子單擊后還是在當(dāng)前頁(yè)面*/
????????????????PendingIntent?intent?=?PendingIntent
????????????????????.getActivity(UseNotification.this,
????????????????????????????0,?new?Intent(UseNotification.this,UseNotification.class)
????????????????????????????,?0);
????????????????????/**設(shè)置通知消息*/
????????????????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)建通知對(duì)象*/
????????????????Notification?notification?=?new?Notification();
????????????????????/**獲取系統(tǒng)當(dāng)前聲音*/
????????????????String?ringName?=?RingtoneManager.getActualDefaultRingtoneUri(
????????????????????????UseNotification.this,?RingtoneManager.TYPE_RINGTONE)
????????????????????????.toString();
????????????????????/**設(shè)置系統(tǒng)當(dāng)前鈴聲為此通知的鈴聲*/
????????????????notification.sound?=?Uri.parse(ringName);
????????????????????/**執(zhí)行通知*/
????????????????notificationManager.notify(0,notification);
????????????}
????????};
????????????/**震動(dòng)通知*/
????????public?Button.OnClickListener?notificationVibrate?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????Notification?notification?=?new?Notification();//?創(chuàng)建Notification對(duì)象
????????????????notification.vibrate?=?new?long[]?{0,?100,?200,?300};//?設(shè)置通知震動(dòng)模式
????????????????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對(duì)象
????????????????notification.ledOnMS?=?300;//?設(shè)置led開(kāi)始閃光的時(shí)間
????????????????notification.ledOffMS?=?1000;//?設(shè)置關(guān)閉時(shí)的閃光時(shí)間
????????????????notificationManager.notify(0,notification);//?執(zhí)行通知
????????????}
????????};
????????????/**關(guān)閉通知*/
????????public?Button.OnClickListener?notificationOff?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????notificationManager.cancel(0);//?關(guān)閉通知
????????????}
????????};
????}?
6.Alarm
?
鬧鐘服務(wù)
?
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);
????}
????????/**啟動(dòng)鬧鐘*/
????public?Button.OnClickListener?startAlarms?=?new?Button.OnClickListener(){
????????public?void?onClick(View?view){
????????????????//?設(shè)置10秒后出發(fā)鬧鐘
????????????Calendar?calendar?=?Calendar.getInstance();
????????????calendar.setTimeInMillis(System.currentTimeMillis());//?設(shè)置calendar的時(shí)間
????????????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.獲取手機(jī)的狀態(tài)
這個(gè)功能實(shí)現(xiàn)的是獲取用戶手機(jī)的一些定義的信息
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;
/**獲取手機(jī)的狀態(tài)*/
????public?class?UsePhoneState?extends?Activity{
????????????/**創(chuàng)建參數(shù)*/
????????private?ContentResolver?cr;
????????private?Button?getStateButton;//?用來(lái)獲取用戶的手機(jī)狀態(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對(duì)象*/
????????????????TelephonyManager?telephonyManager?=?(TelephonyManager)?getSystemService(Service.TELEPHONY_SERVICE);
????????????????????/**獲取電信網(wǎng)絡(luò)級(jí)別*/
????????????????String?teleCode?=?telephonyManager.getNetworkCountryIso();
????????????????????/**獲取電信網(wǎng)絡(luò)公司代碼*/
????????????????String?teleComCode?=?telephonyManager.getNetworkOperator();
????????????????????/**獲取電信網(wǎng)絡(luò)公司名稱(chēng)*/
????????????????String?teleComName?=?telephonyManager.getNetworkOperatorName();
????????????????????/**獲取行動(dòng)通信類(lèi)型*/
????????????????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)絡(luò)類(lèi)型*/
????????????????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";
????????????????}
????????????????
????????????????????/**獲取手機(jī)唯一標(biāo)識(shí)*/
????????????????String?imei?=?telephonyManager.getDeviceId();
????????????????????/**獲取手機(jī)IMEI?SV*/
????????????????String?imeiSV?=?telephonyManager.getDeviceSoftwareVersion();
????????????????????/**獲取手機(jī)IMSI*/
????????????????String?imsi?=?telephonyManager.getSubscriberId();
????????????????
????????????????????/**藍(lán)牙服務(wù)*/
????????????????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";
????????????????}
????????????????
????????????????????/**飛行模式是否打開(kāi)*/
????????????????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ù)漫游模式是否打開(kāi)*/
????????????????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
?
震動(dòng)功能,實(shí)現(xiàn)對(duì)手機(jī)震動(dòng)的管理
?
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;
/**如何實(shí)現(xiàn)手機(jī)的震動(dòng)提示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);
????????}
????????????/**震動(dòng)一次*/
????????public?Button.OnClickListener?vibrator_1?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????????/**long參數(shù)數(shù)組里大參數(shù)的含義*/
????????????????????/**第一個(gè)參數(shù)表示等待100毫秒后開(kāi)始震動(dòng)*/
????????????????????/**第二個(gè)參數(shù)表示震動(dòng)100毫秒后停止震動(dòng)*/
????????????????vibrator.vibrate(new?long[]{100,100},?0);
????????????}
????????};
????????????/**震動(dòng)兩次*/
????????public?Button.OnClickListener?vibrator_2?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????vibrator.vibrate(new?long[]{1000,3000,1000,3000},?0);
????????????}
????????};
????????????/**震動(dòng)三次*/
????????public?Button.OnClickListener?vibrator_3?=?new?Button.OnClickListener(){
????????????public?void?onClick(View?view){
????????????????vibrator.vibrate(new?long[]{1000,1000,1000,2000,1000,300},?0);
????????????}
????????};
????}




