展会信息港展会大全

一个Demo学完Android中所有的服务
来源:互联网   发布日期:2016-01-19 11:06:01   浏览:2268次  

导读:作者通过一个demo中的代码介绍了多种服务功能的实现。如果可以的话去下一个demo相信效果一定很显著。希望阅读完一个Demo学完Android中 所有的服务可以对学习中的你有所帮助。这个例子来自安卓巴士,经阅读,理解 ...

作者通过一个demo中的代码介绍了多种服务功能的实现。如果可以的话去下一个demo相信效果一定很显著。希望阅读完一个Demo学完Android中 所有的服务可以对学习中的你有所帮助。

这个例子来自 安卓巴士 ,经阅读,理解,写此文章,希望通过这篇一个Demo学完Android中所有的服务对对广大读者有所帮助。

说明:这个例子实现了Android中常见的许多服务,下面是实现的截图

接下来,以源代码的方式分析这个例子

1.MainActivity--主界面

这个类主要是实现用户所看到的这个Activity,其中包含了一系列的按钮,用户点击按钮执行相应的动作,所以在这个类中主要是对按钮的定义和对 按钮绑定相应的监听器,下面是实现的代码:

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 {

/**参数设置*/

Button startServiceButton;// 启动服务按钮

Button shutDownServiceButton;// 关闭服务按钮

Button startBindServiceButton;// 启动绑定服务按钮

Button sendBroadcast;// 使用广播

Button notificationButton;// 使用通知功能

Button alarmButton;// 使用闹钟

Button handlerButton;// 使用handler

Button asyncButton;// 使用异步加载

Button phoneStateButton;// 查看手机状态

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);

}

/**为按钮添加监听*/

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);

}

/**启动服务的事件监听*/

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.启动服务按钮

这个类实现的是第一个按钮的功能,在这个类中新开了一个线程,并每隔一秒打印出一行日志

代码如下:

package lovefang.stadyService;

/**引入包*/

import android.app.Service;// 服务的类

import android.os.IBinder;

import android.os.Binder;

import android.content.Intent;

import android.util.Log;

/**计数的服务*/

public class CountService extends Service{

/**创建参数*/

boolean threadDisable ;

int count;

public IBinder onBind(Intent intent){

return null;

}

public void onCreate(){

super.onCreate();

/**创建一个线程,每秒计数器加一,并在控制台进行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();

/**服务停止时,终止计数进程*/

this.threadDisable = true;

}

public int getConunt(){

return count;

}

class ServiceBinder extends Binder{

public CountService getService(){

return CountService.this;

}

}

}

3.绑定服务

服务有两种实现的方法:

(1)startService,启动服务,这时需要程序员管理服务的生命周期

(2)bindService,绑定服务,此时Service与Activity绑定在一起

下面是实现的代码:

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的方式启动和结束服务*/

public class UseBrider extends Activity {

/**参数设置*/

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");

}

}

接下来为您介绍发送广播、Notification通知、Alarm 闹钟等服务的具体内容

4.发送广播

使用sendBroadcast,向一个Action发送广播,并由相应的广播接收器接收并执行相应的动作

实现的代码如下:

(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,这是一个发送广播的类*/

public class UseBroadcast extends Activity{

/**创建参数*/

private Button sendBroadcast;

/**创建Activity*/

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.broadcast);// 使用布局文件

getView();

sendBroadcast.setOnClickListener(sendBroadcastClick);// 添加事件监听

}

public void getView(){

sendBroadcast = (Button)findViewById(R.id.sendBroadcast);

}

/**创建事件监听*/

public Button.OnClickListener sendBroadcastClick = new Button.OnClickListener(){

public void onClick(View view){

Intent intent = new Intent();// 创建意图

intent.putExtra("CONTENT","This is a Braodcast demo");// 设置广播的内容

intent.setAction("lovefang.stadyService");// 设置广播的Action

sendBroadcast(intent);

}

};

}

(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通知

这个称之为通知,显示在手机的通知栏,用户可以清除,可以点击

实现的代码如下:

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 {

/**创建组件*/

private Button textButton;

private Button soundButton;// 声音通知

private Button vibrateButton;// 震动通知

private Button ledButton;// led通知

private Button offButton;// 关闭通知

NotificationManager notificationManager;

/**创建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();// 创建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);

/**执行通知*/

notificationManager.notify(0, notification);

}

};

public Button.OnClickListener notificationSound = new Button.OnClickListener(){

public void onClick(View view){

/**创建通知对象*/

Notification notification = new Notification();

/**获取系统当前声音*/

String ringName = RingtoneManager.getActualDefaultRingtoneUri(

UseNotification.this, RingtoneManager.TYPE_RINGTONE)

.toString();

/**设置系统当前铃声为此通知的铃声*/

notification.sound = Uri.parse(ringName);

/**执行通知*/

notificationManager.notify(0,notification);

}

};

/**震动通知*/

public Button.OnClickListener notificationVibrate = new Button.OnClickListener(){

public void onClick(View view){

Notification notification = new Notification();// 创建Notification对象

notification.vibrate = new long[] {0, 100, 200, 300};// 设置通知震动模式

notificationManager.notify(0,notification);// 执行通知

}

};

/**LED通知*/

public Button.OnClickListener notificationLed = new Button.OnClickListener(){

public void onClick(View view){

Notification notification = new Notification();// 创建Notification对象

notification.ledOnMS = 300;// 设置led开始闪光的时间

notification.ledOffMS = 1000;// 设置关闭时的闪光时间

notificationManager.notify(0,notification);// 执行通知

}

};

/**关闭通知*/

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 {

/**创建参数*/

private Button startAlarm;

private Button shutdownAlarm;

private AlarmManager alarm;

/**创建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秒后出发闹钟

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);

}

};

}

下页将为您介绍获取手机的状态、Vibrator 震动功能等服务的具体内 容

7.获取手机的状态

这个功能实现的是获取用户手机的一些定义的信息

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;

/**获取手机的状态*/

public class UsePhoneState extends Activity{

/**创建参数*/

private ContentResolver cr;

private Button getStateButton;// 用来获取用户的手机状态

/**创建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);

/**获取电信网络级别*/

String teleCode = telephonyManager.getNetworkCountryIso();

/**获取电信网络公司代码*/

String teleComCode = telephonyManager.getNetworkOperator();

/**获取电信网络公司名称*/

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;

}

/**获取网络类型*/

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;

}

/**获取漫游状态*/

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";

}

/**数据漫游模式是否打开*/

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 震动功能

实现对手机震动的管理

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;

/**如何实现手机的震动提示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参数数组里大参数的含义*/

/**第一个参数表示等待100毫秒后开始震动*/

/**第二个参数表示震动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);

}

};

}

赞助本站

人工智能实验室

相关热词: Demo 服务

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港