日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Android拨打接听电话自动免提

發布時間:2023/12/19 综合教程 53 生活家
生活随笔 收集整理的這篇文章主要介紹了 Android拨打接听电话自动免提 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
權限:
  <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;//當前音量 @Override protected 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;//標識 @Override public 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:此方式在華為手機上不兼容

總結

以上是生活随笔為你收集整理的Android拨打接听电话自动免提的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。