Android拨打接听电话自动免提

news/2024/11/27 21:21:30/
权限:
  <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" />  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />  

public
class MainActivity extends AppCompatActivity {AudioManager audioManager;int currVolume;//当前音量 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);TelListner listener = new TelListner();telManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);}public void click(View v) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (MainActivity.this.checkSelfPermission(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {callPhone();} else {// Toast.makeText(this, "没有权限", Toast.LENGTH_LONG).show();}} else {callPhone();}}void callPhone() {Intent callIntent = new Intent(Intent.ACTION_CALL);callIntent.setData(Uri.parse("tel:10086"));callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(callIntent);}private class TelListner extends PhoneStateListener {boolean comingPhone = false;//标识 @Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE:/* 无任何状态 */if (this.comingPhone) {this.comingPhone = false;setSpeekModle(false);}break;case TelephonyManager.CALL_STATE_OFFHOOK:/* 接起电话 */this.comingPhone = true;setSpeekModle(true);break;case TelephonyManager.CALL_STATE_RINGING:/* 电话进来 */this.comingPhone = true;setSpeekModle(true);break;}}}void setSpeekModle(boolean open) {audioManager.setMode(AudioManager.ROUTE_SPEAKER);currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);//5.0以上if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);} else {audioManager.setMode(AudioManager.MODE_IN_CALL);}if (!audioManager.isSpeakerphoneOn() && open) {Toast.makeText(MainActivity.this, "免提模式", Toast.LENGTH_LONG).show();audioManager.setSpeakerphoneOn(true);//开启免提 audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),AudioManager.STREAM_VOICE_CALL);} else if (audioManager.isSpeakerphoneOn() && open) {audioManager.setSpeakerphoneOn(false);audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, currVolume,AudioManager.STREAM_VOICE_CALL);}} }

ps:此方式在华为手机上不兼容

转载于:https://www.cnblogs.com/baiyi168/p/6378435.html


http://www.ppmy.cn/news/422256.html

相关文章

一行代码实现一键拨打电话

现在做的App几乎都有一键拨打电话的功能&#xff0c;实现起来very的简单&#xff0c;下面就来简单的实现一下一键拨打联系人的功能 首先先在清单文件里面添加拨打电话的权限 <!--拨打电话--><uses-permission android:name"android.permission.CALL_PHONE"…

电话机器人API接口-空号识别

电话机器人API接口 自动外呼&#xff1a;批量高并发自动外呼 语音识别&#xff08;ASR&#xff09;&#xff1a;对接主流语音识别接口。 语音合成&#xff08;TTS&#xff09; 录音存储&#xff1a;存储全程录音以及分段录音 设备管理&#xff1a;语音网关以及中继线设备管理 呼…

拨打电话 java_简单拨打电话程序

众所周知,对于一个手机,能拨打电话是其最重要也是最常用的一个功能.而在Android里是怎么样实现拨打电话的程序呢?我在这里写了一个简单的拨打电话的Demo,供大家参考.一共分为5个步骤. Step 1:新建一个Android工程,命名为phoneCallDemo. Step 2:设计程序的界面,打开main.xml把内…

iOS 拨打电话

第一种 NSString *phoneStr [NSString stringWithFormat:"tel://%",phone]; if ([[[UIDevice currentDevice] systemVersion] floatValue] > 10.0) {//设备系统为IOS 10.0或者以上的[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneStr]…

实现电话自动拨打、挂断

声明&#xff1a;该软件只是用以学习android系统的相关知识&#xff0c;任何参考该博客文章的其他行为均与该博客文章的作者无关。 软件要实现的大致功能是&#xff1a;通过输入框获取需要拨打的电话号码&#xff0c;电泳android打电话功能进行拨号&#xff0c;判断电话是否打…

手机网页点击链接触发手机自动拨打或保存电话的代码

通过网页拨打电话 <p><a href”wtai://wp/mc;135xxxxxxxx ”>拨打电话</a></p> 注: 135xxxxxxxx是号码, 你可以换成你想拨打的号码. 通过网页存储电话号码 <p><a href”wtai://wp/ap;1860;中国移动”>存储号码</a></p> 注: 这…

拨打手机时提示空号的简单方法

在不想被别人烦又不好意思关机时&#xff0c;让别人打你手机时提示空号 是一个不错的idea。下面给出一个能让你的手机 随时变成空号方法 &#xff0c;灰常简单&#xff5e;&#xff5e;有需要的朋友们可以记一记…… 在待机状态下 输入**21*999999# 再按下拨号键~ OK 大功告成~…