Skip to content

Commit 19735aa

Browse files
committed
合规修改-添加语音呼叫唤起麦克风权限。
Change-Id: I29c46feb1b43402d404c42eb07facc4d5a08458f
1 parent 8c368c0 commit 19735aa

File tree

2 files changed

+87
-4
lines changed

2 files changed

+87
-4
lines changed

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/rtcui/audiocall/TRTCAudioCallActivity.java

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.tencent.iot.explorer.link.kitlink.activity.rtcui.audiocall;
22

3+
import android.Manifest;
34
import android.content.Context;
45
import android.content.Intent;
56
import android.content.IntentFilter;
7+
import android.content.pm.PackageManager;
68
import android.os.Bundle;
79
import android.os.Handler;
810
import android.os.HandlerThread;
@@ -16,13 +18,20 @@
1618
import android.widget.TextView;
1719
import android.widget.Toast;
1820

21+
import androidx.annotation.NonNull;
1922
import androidx.annotation.Nullable;
2023
import androidx.appcompat.app.AppCompatActivity;
2124
import androidx.constraintlayout.widget.Group;
25+
import androidx.core.app.ActivityCompat;
2226

2327
//import com.blankj.utilcode.util.CollectionUtils;
2428
//import com.blankj.utilcode.util.ToastUtils;
2529
import com.alibaba.fastjson.JSON;
30+
import com.alibaba.fastjson.JSONObject;
31+
import com.tencent.iot.explorer.link.T;
32+
import com.tencent.iot.explorer.link.core.utils.Utils;
33+
import com.tencent.iot.explorer.link.customview.dialog.PermissionDialog;
34+
import com.tencent.iot.explorer.link.kitlink.consts.CommonField;
2635
import com.tencent.iot.explorer.link.rtc.R;
2736
import com.tencent.iot.explorer.link.rtc.model.IntentParams;
2837
import com.tencent.iot.explorer.link.rtc.model.RoomKey;
@@ -94,6 +103,9 @@ public class TRTCAudioCallActivity extends AppCompatActivity implements NetWorkS
94103
private TimerTask enterRoomTask = null;
95104
private NetWorkStateReceiver netWorkStateReceiver;
96105

106+
private PermissionDialog permissionDialog = null;
107+
private boolean requestRecordAudioPermission = false;
108+
97109
/**
98110
* 拨号的回调
99111
*/
@@ -342,6 +354,58 @@ private void removeIsEnterRoom60secondsTask() {
342354
}
343355
}
344356

357+
@Override
358+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
359+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
360+
if (requestCode == 103) {
361+
permissionDialog.dismiss();
362+
permissionDialog = null;
363+
if (!requestRecordAudioPermission) {
364+
checkAndRequestPermission();
365+
} else {
366+
boolean calling = initData();
367+
initListener();
368+
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
369+
}
370+
}
371+
}
372+
373+
private void checkAndRequestPermission() {
374+
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_DENIED && !requestRecordAudioPermission) {
375+
// 查看请求mic权限的时间是否大于48小时
376+
String micJsonString = Utils.INSTANCE.getStringValueFromXml(this, CommonField.PERMISSION_MIC, CommonField.PERMISSION_MIC);
377+
long lasttime = 0L;
378+
if (micJsonString != null) {
379+
JSONObject micJson = JSON.parseObject(micJsonString);
380+
lasttime = micJson.getLong(CommonField.PERMISSION_MIC);
381+
}
382+
if (micJsonString != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48 * 60 * 60) {
383+
T.show(getString(com.tencent.iot.explorer.link.R.string.permission_of_camera_mic_refuse));
384+
boolean calling = initData();
385+
initListener();
386+
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
387+
TRTCUIManager.getInstance().refuseEnterRoom(TRTCCalling.TYPE_AUDIO_CALL, mSponsorUserInfo.getUserId());
388+
removeCallbackAndFinish();
389+
return;
390+
}
391+
if (permissionDialog == null) {
392+
permissionDialog = new PermissionDialog(this, com.tencent.iot.explorer.link.R.mipmap.permission_mic ,getString(com.tencent.iot.explorer.link.R.string.permission_mic_lips), getString(com.tencent.iot.explorer.link.R.string.permission_camera_trtc));
393+
permissionDialog.show();
394+
requestRecordAudioPermission = true;
395+
}
396+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 103);
397+
398+
// 记录请求mic权限的时间
399+
JSONObject json = new JSONObject();
400+
json.put(CommonField.PERMISSION_MIC, System.currentTimeMillis() / 1000);
401+
Utils.INSTANCE.setXmlStringValue(this, CommonField.PERMISSION_MIC, CommonField.PERMISSION_MIC, json.toJSONString());
402+
return;
403+
}
404+
boolean calling = initData();
405+
initListener();
406+
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
407+
}
408+
345409
@Override
346410
protected void onCreate(@Nullable Bundle savedInstanceState) {
347411
super.onCreate(savedInstanceState);
@@ -408,9 +472,10 @@ public void userOffline(String deviceId) {
408472
});
409473

410474
initView();
411-
boolean calling = initData();
412-
initListener();
413-
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
475+
checkAndRequestPermission();
476+
// boolean calling = initData();
477+
// initListener();
478+
// checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
414479
}
415480

416481
@Override

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/rtcui/videocall/TRTCVideoCallActivity.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ private void removeIsEnterRoom60secondsTask() {
390390
@Override
391391
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
392392
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
393-
if (requestCode == 102 || requestCode == 103 || requestCode == 104) {
393+
if (requestCode == 102 || requestCode == 103) {
394394
permissionDialog.dismiss();
395395
permissionDialog = null;
396396
if (!requestCameraPermission || !requestRecordAudioPermission) {
@@ -413,6 +413,15 @@ private void checkAndRequestPermission() {
413413
lasttime = cameraJson.getLong(CommonField.PERMISSION_CAMERA);
414414
}
415415
if (cameraJsonString != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48 * 60 * 60) {
416+
boolean calling = initData();
417+
initListener();
418+
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
419+
if (mSponsorUserInfo == null) {
420+
stopCameraAndFinish();
421+
return;
422+
}
423+
TRTCUIManager.getInstance().refuseEnterRoom(TRTCCalling.TYPE_VIDEO_CALL, mSponsorUserInfo.getUserId());
424+
stopCameraAndFinish();
416425
T.show(getString(com.tencent.iot.explorer.link.R.string.permission_of_camera_refuse));
417426
return;
418427
}
@@ -438,6 +447,15 @@ private void checkAndRequestPermission() {
438447
lasttime = micJson.getLong(CommonField.PERMISSION_MIC);
439448
}
440449
if (micJsonString != null && lasttime > 0 && System.currentTimeMillis() / 1000 - lasttime < 48 * 60 * 60) {
450+
boolean calling = initData();
451+
initListener();
452+
checkoutIsEnterRoom60seconds(calling, getString(R.string.trtccalling_customer_no_resp));
453+
if (mSponsorUserInfo == null) {
454+
stopCameraAndFinish();
455+
return;
456+
}
457+
TRTCUIManager.getInstance().refuseEnterRoom(TRTCCalling.TYPE_VIDEO_CALL, mSponsorUserInfo.getUserId());
458+
stopCameraAndFinish();
441459
T.show(getString(com.tencent.iot.explorer.link.R.string.permission_of_camera_mic_refuse));
442460
return;
443461
}

0 commit comments

Comments
 (0)