- 浏览: 1501977 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
参考:
android 呼入电话的监听(来电监听)
http://stephen830.iteye.com/blog/1181010
android 呼出电话的监听(去电监听)
http://stephen830.iteye.com/blog/1181452
android-轻松监听来电和去电
http://www.eoeandroid.com/thread-8994-1-1.html
android 呼入电话的监听(来电监听)
需要权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
方式一:通过广播接收来电
定义来电广播接收类
package com.zhouzijing.android.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class BroadcastReceiverMgr extends BroadcastReceiver { private final String TAG = MyBroadcastReceiver.TAG; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.i(TAG, "[Broadcast]"+action); //呼入电话 if(action.equals(MyBroadcastReceiver.B_PHONE_STATE)){ Log.i(TAG, "[Broadcast]PHONE_STATE"); doReceivePhone(context,intent); } } /** * 处理电话广播. * @param context * @param intent */ public void doReceivePhone(Context context, Intent intent) { String phoneNumber = intent.getStringExtra( TelephonyManager.EXTRA_INCOMING_NUMBER); TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); int state = telephony.getCallState(); switch(state){ case TelephonyManager.CALL_STATE_RINGING: Log.i(TAG, "[Broadcast]等待接电话="+phoneNumber); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "[Broadcast]通话中="+phoneNumber); break; } } }
定义Actitvity类
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyBroadcastReceiver extends Activity { public final static String TAG = "MyBroadcastReceiver"; public final static String B_PHONE_STATE = TelephonyManager.ACTION_PHONE_STATE_CHANGED; private BroadcastReceiverMgr mBroadcastReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_broadcast_receiver); } //按钮1-注册广播 public void registerIt(View v) { Log.i(TAG, "registerIt"); mBroadcastReceiver = new BroadcastReceiverMgr(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(B_PHONE_STATE); intentFilter.setPriority(Integer.MAX_VALUE); registerReceiver(mBroadcastReceiver, intentFilter); } //按钮2-撤销广播 public void unregisterIt(View v) { Log.i(TAG, "unregisterIt"); unregisterReceiver(mBroadcastReceiver); } }
方式二:通过监听器来实现
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyBroadcastReceiver extends Activity { public final static String TAG = "MyBroadcastReceiver"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_broadcast_receiver); } /** * 按钮-监听电话 * @param v */ public void createPhoneListener(View v) { TelephonyManager telephony = (TelephonyManager)getSystemService( Context.TELEPHONY_SERVICE); telephony.listen(new OnePhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); } /** * 电话状态监听. * @author stephen * */ class OnePhoneStateListener extends PhoneStateListener{ @Override public void onCallStateChanged(int state, String incomingNumber) { Log.i(TAG, "[Listener]电话号码:"+incomingNumber); switch(state){ case TelephonyManager.CALL_STATE_RINGING: Log.i(TAG, "[Listener]等待接电话:"+incomingNumber); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "[Listener]电话挂断:"+incomingNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "[Listener]通话中:"+incomingNumber); break; } super.onCallStateChanged(state, incomingNumber); } } }
android 呼出电话的监听(去电监听)
权限:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
通过接收呼出电话的广播来实现
定义广播类
package com.zhouzijing.android.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class BroadcastReceiverMgr extends BroadcastReceiver { private final String TAG = MyBroadcastReceiver.TAG; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.i(TAG, "[Broadcast]"+action); //呼出电话 if(action.equals(MyBroadcastReceiver.B_ACTION_NEW_OUTGOING_CALL)){ String outPhoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Log.i(TAG, "[Broadcast]ACTION_NEW_OUTGOING_CALL:"+outPhoneNumber); //this.setResultData(null); //这里可以更改呼出电话号码。如果设置为null,电话就永远不会播出了. } } }
定义activity类
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyBroadcastReceiver extends Activity { public final static String TAG = "MyBroadcastReceiver"; public final static String B_ACTION_NEW_OUTGOING_CALL = Intent.ACTION_NEW_OUTGOING_CALL; private BroadcastReceiverMgr mBroadcastReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_broadcast_receiver); } //按钮1-注册广播 public void registerIt(View v) { Log.i(TAG, "registerIt"); mBroadcastReceiver = new BroadcastReceiverMgr(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL); intentFilter.setPriority(Integer.MAX_VALUE); registerReceiver(mBroadcastReceiver, intentFilter); } //按钮2-撤销广播 public void unregisterIt(View v) { Log.i(TAG, "unregisterIt"); unregisterReceiver(mBroadcastReceiver); } }
---------------------------------------------------------------------------------------------------------
要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
public class PhoneStatReceiver extends BroadcastReceiver{ private static final String TAG = "PhoneStatReceiver"; // private static MyPhoneStateListener phoneListener = new MyPhoneStateListener(); private static boolean incomingFlag = false; private static String incoming_number = null; @Override public void onReceive(Context context, Intent intent) { //如果是拨打电话 if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ incomingFlag = false; String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Log.i(TAG, "call OUT:"+phoneNumber); }else{ //如果是来电 TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); switch (tm.getCallState()) { case TelephonyManager.CALL_STATE_RINGING: incomingFlag = true;//标识当前是来电 incoming_number = intent.getStringExtra("incoming_number"); Log.i(TAG, "RINGING :"+ incoming_number); break; case TelephonyManager.CALL_STATE_OFFHOOK: if(incomingFlag){ Log.i(TAG, "incoming ACCEPT :"+ incoming_number); } break; case TelephonyManager.CALL_STATE_IDLE: if(incomingFlag){ Log.i(TAG, "incoming IDLE"); } break; } } } }
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
<receiver android:name=".filter.PhoneStatReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1482http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7546http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2629AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1182http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1683使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1256Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 981A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1298SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1195kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1021http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1040http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1673http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1154http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2341Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6036JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1222最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1293本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3178http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20840http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2007MyCar Recorder DailyRoads
相关推荐
在Android开发中,监听来电和去电是许多应用程序的核心功能之一,尤其是在通讯应用、日志记录或企业级安全软件中。根据给定的文件信息,我们可以深入探讨如何在Android中实现这一功能,包括必要的权限设置、广播接收...
例如,检查来电状态通常需要监听PhoneStateListener或BroadcastReceiver,而权限方面则需要确保应用已经获得了ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限,因为Android 6.0及以上版本需要运行时权限。...
在Android开发中,拨号键盘和来去电监听是两个重要的功能模块,它们涉及到用户与设备的通信交互。本文将详细解析如何实现这样的功能,并提供相关的编程知识点。 首先,我们来了解一下拨号键盘的实现。在Android系统...
在Android平台上,来电和去电的监听以及电话挂断的处理是通过系统级别的电话状态监听器(PhoneStateListener)实现的。这个功能涉及到Android的电信服务API,它允许应用程序接收和响应电话事件,如通话开始、结束、...
实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。 TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用...
在Android系统中,获取来电和去电号码是开发者经常需要处理的任务,这主要涉及到电话管理和广播接收器的相关知识。下面将详细阐述如何实现这一功能。 首先,我们需要了解Android的权限管理。由于涉及到用户隐私,...
总之,通过BroadcastReceiver可以实现对Android设备上Home键、电源键和音量键的监听。在实际开发中,理解BroadcastReceiver的工作原理和使用方式,以及对权限的管理,是提升用户体验的关键。同时,合理地组织项目...
在Android平台上,对电话状态的监听和拦截是一个需要特别权限和精确实现的敏感操作,这涉及到Android的权限管理、广播接收器(BroadcastReceiver)、事件监听机制以及电话状态的处理。以下知识点将详细介绍如何实现这...
- `PhoneStateListener`是系统提供的监听电话状态变化的类,通过注册监听器来捕捉来电、去电、电话挂断等事件。 - 示例代码中,使用了`PhoneReceiver`类继承自`BroadcastReceiver`,并重写了`onReceive`方法来处理...
本文档将详细讲解如何在Android的WebView中监听URL的变化以及如何监听页面加载的完成情况。 首先,要监听WebView中URL的变化,可以通过设置自定义的WebViewClient,并重写onLoadResource方法。当WebView开始加载新...
android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么...
首先,我们需要了解Android中的`TelephonyManager`类,它是系统提供的一个接口,用于获取手机通话状态和网络信息。通过这个类,我们可以获取到手机的信号强度数据。以下是如何初始化`TelephonyManager`: ```java ...
在Android平台上,监听来电和去电是通过特定的API实现的,主要涉及到`PhoneStateListener`和广播接收器。下面将详细阐述这两个方法,并探讨它们的用途和注意事项。 首先,我们来看来电监听。来电监听主要利用`...
6 创建自定义列表对话框 笔者为该对话框添加了自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 ...
本文实例讲述了Android监听来电和去电的实现方法。分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; ...
Android 数据库内容变化的监听 Android 数据库内容变化的监听是 Android 系统中一种重要的机制,用于监听数据库中的内容变化。这种机制基于 Uri 的内容监测,通过 ContentResolver 类提供了三个方法来实现监听功能...
本篇将详细讲解如何在Android Webview中实现滑动监听以及图片的放大缩小功能。 首先,我们要了解`WebView`的基本用法。在Android Studio中,创建一个新的布局XML文件,添加`WebView`组件: ```xml android:id="@...
综上所述,监听Android设备上其他应用的启动,需要根据API版本选择合适的方法。对于较新的Android版本,需要结合多种技术,如BroadcastReceiver和UsageStatsManager,以实现对应用启动的跟踪和分析。同时,理解...
这个项目已经很老了,其实是从 Android 4.4.4 的系统 Settings 中 copy 出来的。 其实原理都是编译运行系统 ...Android 操作以太网的项目,提供了监听网线插拔和以太网开关,设置以太网静态IP、网关、子网掩码、dns等。
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo