当前位置:首页 » 安卓系统 » android接听电话

android接听电话

发布时间: 2022-12-10 05:56:37

‘壹’ Android 手机怎样实现多部手机接听同一个电话

手机应该有一个多方通话的功能。可以同时接几个人的电话,或是开电话会议。这个需要运营商的支持,在开通三方通话这个功能后,可以保持通话,或是添加 通话人,或是通话中来电时,接听另一人电话。这个应该是是需要打客服电话开这项功能,或者营业厅开通的。

‘贰’ Android怎么实现自动接听来电

android 实现来电自动接听和自动挂断的方法:
第一步:准备应用环境需要的系统包和aidl文件。
(1)在应用中创建包:android.telephony
将android系统框架下的\framework\telephony\java\android\telephony目录中的NeighboringCellInfo.aidl文件复制到上面创建的包(android.telephony )中;
(2)在应用中创建包:com.android.internal.telephony
将android系统框架下的\framework\telephony\java\com\android\internal\telephony目录中的ITelephony.aidl文件复制到上面创建的包(com.android.internal.telephony )中。
第二步:创建一个获取ITelephony的方法
PhoneUtils.java
package com.zhouzijing.android.demo;

import java.lang.reflect.Method;
import com.android.internal.telephony.ITelephony;
import android.telephony.TelephonyManager;

public class PhoneUtils {
/**
* 根据传入的TelephonyManager来取得系统的ITelephony实例.
* @param telephony
* @return 系统的ITelephony实例
* @throws Exception
*/
public static ITelephony getITelephony(TelephonyManager telephony) throws Exception {
Method getITelephonyMethod = telephony.getClass().getDeclaredMethod("getITelephony");
getITelephonyMethod.setAccessible(true);//私有化函数也能使用
return (ITelephony)getITelephonyMethod.invoke(telephony);
}
}

第三步:创建电话广播拦截器
MyPhoneBroadcastReceiver.java
package com.zhouzijing.android.demo;

import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

public class MyPhoneBroadcastReceiver extends BroadcastReceiver {

private final static String TAG = MyPhone.TAG;

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "[Broadcast]"+action);

//呼入电话
if(action.equals(MyPhone.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);
try {
ITelephony iTelephony = PhoneUtils.getITelephony(telephony);
iTelephony.answerRingingCall();//自动接通电话
//iTelephony.endCall();//自动挂断电话
} catch (Exception e) {
Log.e(TAG, "[Broadcast]Exception="+e.getMessage(), e);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i(TAG, "[Broadcast]通话中="+phoneNumber);
break;
}
}

}

第四部:注册电话广播拦截器
MyPhone.java
package com.zhouzijing.android.demo;

import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;

public class MyPhone extends Activity {
public final static String TAG = "MyPhone";

public final static String B_PHONE_STATE = TelephonyManager.ACTION_PHONE_STATE_CHANGED;

private MyPhoneBroadcastReceiver mBroadcastReceiver;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_phone);
}

//按钮1-注册广播
public void registerThis(View v) {
Log.i(TAG, "registerThis");
mBroadcastReceiver = new MyPhoneBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(B_PHONE_STATE);
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(mBroadcastReceiver, intentFilter);
}

//按钮2-撤销广播
public void unregisterThis(View v) {
Log.i(TAG, "unregisterThis");
unregisterReceiver(mBroadcastReceiver);
}

}

第5步:在AndroidManifest.xml配置权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>

其中:
iTelephony.answerRingingCall();//自动接通电话
必须有权限 android.permission.MODIFY_PHONE_STATE
iTelephony.endCall();//自动挂断电话
必须有权限 android.permission.CALL_PHONE。

‘叁’ Android 手机怎样实现多部手机接听同一个电话

AndrOid手机不接同同一网领域时可以听到同一电话,它有这种功能,其它的没有这功能。AndrOid手机不接同同一网领域时可以听到同一电话,它有这种功能,其它的没有这功能。AndrOid手机不接同同一网领域时可以听到同一电话,它有这种功能,其它的没有这功能。

‘肆’ 怎么改变手机来电接听方式

改变手机来电接听方式的方法:

1.升级或刷机固件android2.3.7系统可以实现自定义滑动接听来电,还有系统设置中==》通话设置==》接听电话==》使用应答模式 短按主屏幕键 ==》还有佩戴耳机时 自动接听来电。

2.现在还没有可靠有效的 软件可实现如 摇动传感器 或者 轻叩机体等接听电话的 安卓等软件,这种接听方式 一般是给有行动或者识别(如盲人)障碍的人士更方便的接听电话的,其一般需要一定的硬件模块支持,不过有消息安卓4.0可整合或实现摇晃或者轻叩手机实现固定模式下的操作。

‘伍’ Android蓝牙耳机接听挂断电话流程

一、alps/packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java

processAnswerCall

这个方法就是接听电话 我们来往上走 还是
alps/packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java

原来是jni回调java。

alps/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp

alps/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp

alps/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp

alps/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp

alps/packages/apps/Bluetooth/jni/com_android_bluetooth_hfp.cpp

alps/system/bt/btif/src/btif_hf.c

alps/system/bt/btif/src/btif_hf.c

alps/system/bt/btif/src/btif_hf.c

alps/hardware/libhardware/include/hardware/bt_hf.h

好了 跟踪完了

logcat | grep "AT cmd"

第一个是接听 第二个是挂断

再往下跟

p_cmd_cback

alps/system/bt/bta/ag/bta_ag_at.c

bta_ag_process_at

alps/system/bt/bta/ag/bta_ag_at.c

system/bt/bta/ag/bta_ag_act.c

热点内容
太平天国迅雷下载ftp 发布:2025-03-16 03:13:19 浏览:64
服务器硬盘温度怎么调节 发布:2025-03-16 03:11:47 浏览:74
netcore编译前执行代码 发布:2025-03-16 03:05:17 浏览:475
饥荒联机版服务器搭建程序 发布:2025-03-16 02:55:18 浏览:684
win7如何访问共享 发布:2025-03-16 02:55:14 浏览:37
centosphp升级 发布:2025-03-16 02:42:04 浏览:52
绝地求生体验服为什么服务器已满了 发布:2025-03-16 02:42:03 浏览:706
服务器电脑机房是干嘛的 发布:2025-03-16 02:30:47 浏览:489
龙贝格算法c语言 发布:2025-03-16 02:26:28 浏览:102
c语言字符串读入 发布:2025-03-16 02:21:23 浏览:478