您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Android中的服務(wù)怎么實(shí)現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Android中的服務(wù)怎么實(shí)現(xiàn)”吧!
說明:這個(gè)例子實(shí)現(xiàn)了Android中常見的許多服務(wù),下面是實(shí)現(xiàn)的截圖
接下來,以源代碼的方式分析這個(gè)例子
1.MainActivity--主界面
這個(gè)類主要是實(shí)現(xiàn)用戶所看到的這個(gè)Activity,其中包含了一系列的按鈕,用戶點(diǎn)擊按鈕執(zhí)行相應(yīng)的動(dòng)作,所以在這個(gè)類中主要是對(duì)按鈕的定義和對(duì)按鈕綁定相應(yīng)的監(jiān)聽器,下面是實(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)聽*/ 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)聽*/ 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"); } }; /**打開綁定服務(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"); } }; /**打開廣播學(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"); } }; /**打開通知*/ 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è)類實(shí)現(xiàn)的是***個(gè)按鈕的功能,在這個(gè)類中新開了一個(gè)線程,并每隔一秒打印出一行日志
代碼如下:
package lovefang.stadyService; /**引入包*/ import android.app.Service;// 服務(wù)的類 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; /**通過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開始服務(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ù)對(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"); } }
接下來為您介紹發(fā)送廣播、Notification通知、Alarm 鬧鐘等服務(wù)的具體內(nèi)容
4.發(fā)送廣播
使用sendBroadcast,向一個(gè)Action發(fā)送廣播,并由相應(yīng)的廣播接收器接收并執(zhí)行相應(yīng)的動(dòng)作
實(shí)現(xiàn)的代碼如下:
(1)打開廣播服務(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ā)送廣播的類*/ 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");// 設(shè)置廣播的內(nèi)容 intent.setAction("lovefang.stadyService");// 設(shè)置廣播的Action sendBroadcast(intent); } }; }
(2 )處理廣播消息
package lovefang.stadyService; /***/ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /**這是一個(gè)接收廣播的類*/ public class UseBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent){ Log.v("UseBroadcastReceiver", "I get a message"); } }
5.Notification通知
這個(gè)稱之為通知,顯示在手機(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)前頁面*/
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開始閃光的時(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); } }; }
下頁將為您介紹獲取手機(jī)的狀態(tài)、Vibrator 震動(dòng)功能等服務(wù)的具體內(nèi)容
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;// 用來獲取用戶的手機(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ò)公司名稱*/ String teleComName = telephonyManager.getNetworkOperatorName(); /**獲取行動(dòng)通信類型*/ 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ò)類型*/ 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"; } /**飛行模式是否打開*/ 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 震動(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毫秒后開始震動(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); } }; }
到此,相信大家對(duì)“Android中的服務(wù)怎么實(shí)現(xiàn)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。