A. android中怎樣聲明操作通話記錄的權利
Android的通話記錄都實現在靜態類android.provider.CallLog.Calls中。
首先需要讀寫通話記錄的的許可權
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
讀取
Cursor cursor = context.getContentResolver()
.query(CallLog.Calls.CONTENT_URI,
new String[] { CallLog.Calls.NUMBER,
CallLog.Calls.CACHED_NAME,
CallLog.Calls.TYPE,
CallLog.Calls.DATE,
CallLog.Calls.DURATION}, null,
null, CallLog.Calls.DEFAULT_SORT_ORDER);
寫入
ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, "13200000002");
values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE);
values.put(CallLog.Calls.DATE, System.currentTimeMillis());
values.put(CallLog.Calls.DURATION, 1);
context.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
解釋一下各欄位的含義:
public static final String NUMBER:電話號碼,TEXT
public static final String TYPE: 通話記錄類型,可為呼入INCOMING_TYPE,呼出OUTGOING_TYPE和未接MISSED_TYPE。
public static final String CACHED_NAME:緩存的聯系人名字, TEXT
public static final String DATE: 發生通話的時間,INTEGER
public static final String DURATION: 通話進行的時間,INTEGER
常用的應該就這么多。
B. android判斷通話狀態問題
java">caseTelephonyManager.CALL_STATE_RINGING://響鈴
break;
caseTelephonyManager.CALL_STATE_OFFHOOK://摘機
break;
caseTelephonyManager.CALL_STATE_IDLE://空閑
break;
C. android 開發怎麼實現語音通話
android開放實現語音通話最快的方式直接用現成SDK,推薦zego實時語音通話sdk.
以 2 人間的實時語音為例,主要流程如下:
D. android中有辦法獲取當前手機的通話狀態嗎
這些都是普通許可權,賦予使用相應功能的能力。
系統設置許可權:可以更改系統的設置,就是Android的設置頁面設置的選項,比如應用可以修改你當前靜音狀態,打開WIFI連接,關閉移動網路等,而這些許可權如果你不賦予它,它是沒辦法完成的。
通話狀態:應用可以監聽你的來電狀態,知道你當前是否在通話。
建議,這些都是基本的許可權,對用戶安全不會帶來太大的危害,可以不進行禁止。而發送,攔截,通訊錄信息讀取許可權,定位許可權,這些和用戶隱私和資金安全有關,屬於敏感許可權,用戶需要多注意。
E. android中怎麼在通話中播放錄音
1.在手機開機界面點擊「撥號」按鈕。
2.在撥號界面撥電話號碼,接通電話。
3.在通話中,點擊右下角「三點」菜單鍵。
4.在彈出菜單中,點擊「開始錄制」。
5.在通話中,右上角有紅點標識就表示在錄音中。掛斷電話,錄音自動終止。錄音會自動保存。
F. Android如何實現自動接聽和掛斷電話
抱歉,三星手機沒有自帶此功能,請下載第三方軟體嘗試。
G. Android怎麼判斷手機是否處於正在通話中,通話狀態的判斷
是安卓編程嗎?PhoneStateListener有個onCallStateChanged(int state, String incomingNumber)方法,state == TelephonyManager.CALL_STATE_OFFHOOK為電話接聽狀態。
H. android代碼 獲取本次通話時間
直接上代碼:每次通話結束後彈出Toast告知本次通話多長時間。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager phoneManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
phoneManager.listen(new PhoneListen(this),
PhoneStateListener.LISTEN_CALL_STATE);
}
static final class PhoneListen extends PhoneStateListener {
private final Context context;
//獲取本次通話的時間(單位:秒)
int time = 0;
//判斷是否正在通話
boolean isCalling;
//控制循環是否結束
boolean isFinish;
private ExecutorService service;
public PhoneListen(Context context) {
this.context = context;
service = Executors.newSingleThreadExecutor();
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
if (isCalling) {
isCalling = false;
isFinish = true;
service.shutdown();
Toast.makeText(context, "本次通話" + time + "秒",
Toast.LENGTH_LONG).show();
time = 0;
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
isCalling = true;
service.execute(new Runnable() {
@Override
public void run() {
while (!isFinish) {
try {
Thread.sleep(1000);
time++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
break;
case TelephonyManager.CALL_STATE_RINGING:
isFinish = false;
if(service.isShutdown()){
service = Executors.newSingleThreadExecutor();
}
break;
}
}
}
}
I. android 判斷設備是否有通話功能
super.onCallStateChanged(state, incomingNumber); switch(state){ //判斷是否有電話接入 case 1: try { 1是提示對方正在通話中。類似TelephonyManager.CALL_STATE_RINGING通話響鈴的狀態,其他狀態網上有。2是提示對方已啟用來電簡訊提醒功能。