[android] 采用服务执行长期后台的操作详解手机开发
清单文件中 进行配置
新建一个节点 service ,设置名称android:name=”.PhoneService”
类里面有几个重要方法
onCreate()方法,服务被创建的时候调用
onDestory()方法,服务被销毁的时候调用
开启服务
获取intent对象,new Intent(this,PhoneService.class),参数:上下文,字节码
调用上下文对象的startService(intent),参数:intent对象
在服务的onCreate()方法里,执行一些长期操作
获取TelephoneyManager对象,调用getSystemService(TELEPHONY_SERVICE)方法
调用TelephoneyManager对象的listen(istener,events)方法,监听手机通话状态,参数:
PhoneStateListener对象,使用内部类类继承一下,要重写一些方法
PhoneStateListener.LISTEN_CALL_STATE
新建一个内部类MyPhoneStateListener继承PhoneStateListener,
重写方法onCallStateChanged(state,incomingNumber),当手机的电话状态变化的时候,回调此函数
在上面方法里面,switch判断一下通话状态,有以下三种TelephonyManager.CALL_STATE_IDLE空闲状态,TelephonyManager.CALL_STATE_RINGING响铃状态,
TelephonyManager.CALL_STATE_OFFHOOK通话状态
需要权限android.permission.READ_PHONE_STATE
MainActivity.java
package com.tsh.listentel; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //开启服务 Intent intent=new Intent(this,PhoneService.class); startService(intent); }
PhoneService.java
package com.tsh.listentel; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; public class PhoneService extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; //服务创建 @Override public void onCreate() { super.onCreate(); System.out.println("服务创建"); TelephonyManager tm=(TelephonyManager) getSystemService(TELEPHONY_SERVICE); tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); //内部类 private class MyPhoneStateListener extends PhoneStateListener{ @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: System.out.println("空闲状态"); break; case TelephonyManager.CALL_STATE_RINGING: System.out.println("响铃状态"); break; case TelephonyManager.CALL_STATE_OFFHOOK: System.out.println("通话状态"); break; default: break; //服务销毁 @Override public void onDestroy() { System.out.println("服务销毁"); super.onDestroy(); }
Manifest.xml
?xml version="1.0" encoding="utf-8"? manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tsh.listentel" android:versionCode="1" android:versionName="1.0" uses-sdk android:minSdkVersion="8" android:targetSdkVersion="23" / uses-permission android:name="android.permission.READ_PHONE_STATE"/ application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" activity android:name=".MainActivity" android:label="@string/app_name" intent-filter action android:name="android.intent.action.MAIN" / category android:name="android.intent.category.LAUNCHER" / /intent-filter /activity service android:name=".PhoneService" /service /application /manifest
5460.html
app程序应用开发手机开发无线开发移动端开发相关文章
- android studio不能输入中文_Android模拟器
- android开机动画多长时间_Android开机动画原理分析
- android图片资源加密,Android平台图像文件加密
- android app 退出功能,Android 完美退出 App (Exit)
- android退出app代码,Android应用退出代码各种方式
- android 模拟器 haxm,Android模拟器不使用HAXM
- Android preference_android studio preview
- Android n_android 反编译
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android Services Library_android freeware
- Android HAL 与 HIDL 开发笔记
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【Android UI】贝塞尔曲线 ④ ( 使用 android.graphics.Path 提供的 cubicTo 方法绘制三阶贝塞尔曲线示例 )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包、源码、文档上传到本地Maven 仓库 )
- Android中的ProgressBar的android:indeterminate详解手机开发
- Android实现TextView文字水平滚动效果实现详解编程语言
- 超过7000款恶意软件通过Android第三方应用商店传播
- Google 将限制 Android 应用在后台访问地理位置数据
- Android程序退出完美解决方案兼容所有SDK
- android版本检测Android程序的版本检测与更新实现介绍
- Android如何防止apk程序被反编译(尊重劳动成果)
- 基于android中读取assets目录下a.txt文件并进行解析的深入分析
- 在Android模拟器上安装和卸载APK包的方法
- android自定义toast(widget开发)示例
- Android提高之MediaPlayer播放网络音频的实现方法
- Android开发之获取网络链接状态