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是提示对方已启用来电短信提醒功能。