您的位置:首页 > 科技 > 能源 > 浙江温州乐清_网络推广思路_百度之家_百度网盘客服24小时电话人工服务

浙江温州乐清_网络推广思路_百度之家_百度网盘客服24小时电话人工服务

2024/12/23 16:35:05 来源:https://blog.csdn.net/nysin/article/details/144381552  浏览:    关键词:浙江温州乐清_网络推广思路_百度之家_百度网盘客服24小时电话人工服务
浙江温州乐清_网络推广思路_百度之家_百度网盘客服24小时电话人工服务

最近在做项目,对讲应用放在后台,录音无声音,最后解决。

一 现象

对讲应用运行在后台,录音无效查看日志,AudioRecorder录音回调全是0;状态栏无通知,无申请通知权限。

二解决

看了现象应该能够猜测到解决方案了。让应用在后台运行不被挂起,需要申请通知权限,然后创建通知在状态栏显示,防止应用被挂起。

1 申请通知权限

AndroidManifest.xml中

    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
2 代码检查权限
private final ActivityResultLauncher<String> requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(),result -> {if (result == null || !result) {// 用户不允许权限,处理拒绝的情况ToastUtil.getInstance().show("请授予通知权限");} else {// 用户允许权限,处理接受的情况}});@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)public void requestPermission() {if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {// 权限未被授予,向用户请求权限requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);} else {// 权限已经被授予,可以执行操作}}
3 创建通知栏 ,在service中创建
@SuppressLint("NotificationPermission")private void showMessageNotification(String data) {Log.e(TAG, "showMessageNotification data: " + data);String type = data.substring(0, 2);String a = ConvertUtil.convertBigModel(data.substring(2, 10));//短信发送方号码String number = String.valueOf(Long.parseLong(a, 16));//联系人号码
//        String b = ConvertUtil.convertBigModel(data.substring(10, 18));
//        String number1 = String.valueOf(Long.parseLong(b, 16));String text = ConvertUtil.unicodeToString(data.substring(10));Log.e(TAG, "showMessageNotification: " + data);// 为该通知设置一个idint notifyID = 1;daoManager = DaoManager.getInstance(this);smsLists = daoManager.querySmsList();if (smsLists != null && smsLists.size() > 0) {SmsList sms = daoManager.querySms(smsLists.get(smsLists.size() - 1).getId());notifyID = (int) (sms.getId() + 1);}int current = SPUtil.getInt(this, Constant.CHANNEL_INDEX, Constant.CHANNEL_INDEX_DEFAULT);list = new SmsList(notifyID, System.currentTimeMillis(), current, type, number, text, false);daoManager.insertSmsList(list);//创建通知if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);// 通知渠道的idString id = "my_channel_dmr_message";int importance = NotificationManager.IMPORTANCE_DEFAULT;NotificationChannel mChannel = new NotificationChannel(id, number, importance);mChannel.setShowBadge(true);mChannel.setName(getString(R.string.message));mNotificationManager.createNotificationChannel(mChannel);//设置点击事件Intent clickIntent = new Intent(this, SmsActivity.class);clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);PendingIntent clearIntent = PendingIntent.getActivity(this, 0, clickIntent, PendingIntent.FLAG_IMMUTABLE);// 通知渠道的idString CHANNEL_ID = "my_channel_dmr_message";// Create a notification and set the notification channel.Notification notification = new Notification.Builder(this, CHANNEL_ID).setAutoCancel(true).setShowWhen(true).setContentIntent(clearIntent).setContentTitle(number).setContentText(text).setSmallIcon(R.drawable.icon_message).setChannelId(CHANNEL_ID).build();mNotificationManager.notify(notifyID, notification);}}
4 在AndroidManifest.xml中给service增加audioRecorder使用权限
 <serviceandroid:priority="1000"+  android:foregroundServiceType="microphone"android:name=".server.BoService" />

END~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com