|
1 | 1 | package com.tencent.iot.explorer.link.kitlink.activity.rtcui.audiocall; |
2 | 2 |
|
| 3 | +import android.Manifest; |
3 | 4 | import android.content.Context; |
4 | 5 | import android.content.Intent; |
5 | 6 | import android.content.IntentFilter; |
| 7 | +import android.content.pm.PackageManager; |
6 | 8 | import android.os.Bundle; |
7 | 9 | import android.os.Handler; |
8 | 10 | import android.os.HandlerThread; |
|
16 | 18 | import android.widget.TextView; |
17 | 19 | import android.widget.Toast; |
18 | 20 |
|
| 21 | +import androidx.annotation.NonNull; |
19 | 22 | import androidx.annotation.Nullable; |
20 | 23 | import androidx.appcompat.app.AppCompatActivity; |
21 | 24 | import androidx.constraintlayout.widget.Group; |
| 25 | +import androidx.core.app.ActivityCompat; |
22 | 26 |
|
23 | 27 | //import com.blankj.utilcode.util.CollectionUtils; |
24 | 28 | //import com.blankj.utilcode.util.ToastUtils; |
25 | 29 | 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; |
26 | 35 | import com.tencent.iot.explorer.link.rtc.R; |
27 | 36 | import com.tencent.iot.explorer.link.rtc.model.IntentParams; |
28 | 37 | import com.tencent.iot.explorer.link.rtc.model.RoomKey; |
@@ -94,6 +103,9 @@ public class TRTCAudioCallActivity extends AppCompatActivity implements NetWorkS |
94 | 103 | private TimerTask enterRoomTask = null; |
95 | 104 | private NetWorkStateReceiver netWorkStateReceiver; |
96 | 105 |
|
| 106 | + private PermissionDialog permissionDialog = null; |
| 107 | + private boolean requestRecordAudioPermission = false; |
| 108 | + |
97 | 109 | /** |
98 | 110 | * 拨号的回调 |
99 | 111 | */ |
@@ -342,6 +354,58 @@ private void removeIsEnterRoom60secondsTask() { |
342 | 354 | } |
343 | 355 | } |
344 | 356 |
|
| 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 | + |
345 | 409 | @Override |
346 | 410 | protected void onCreate(@Nullable Bundle savedInstanceState) { |
347 | 411 | super.onCreate(savedInstanceState); |
@@ -408,9 +472,10 @@ public void userOffline(String deviceId) { |
408 | 472 | }); |
409 | 473 |
|
410 | 474 | 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)); |
414 | 479 | } |
415 | 480 |
|
416 | 481 | @Override |
|
0 commit comments