Android 中麦克风的独占访问权

问题描述 投票:0回答:5

是否可以从应用程序获得对 Android 麦克风的独占访问权限?

我正在尝试扩展 CSipSimple 应用程序,我的目标是提高它的安全性。 我不知道如何实现的目标之一是阻止其他应用程序记录我的对话。

我从 PlayStore 下载了一个应用程序,它被称为 Call Recorder,当我拨打电话号码时它会自动启动,并且它正在记录我的电话对话。 这就是我需要避免的。

那么,我可以在通话时停止任何应用程序录制我的声音吗?

android security microphone
5个回答
4
投票

正如 Harsha C Alva 提到的,实现此目的的一种方法是迭代已安装的应用程序,检查它们的权限,并在它们正在运行时终止它们。

为了迭代安装应用程序

private void iterateInstalledApps()
{
    PackageManager p = this.getPackageManager();
    final List <PackageInfo> appinstall = 
        p.getInstalledPackages(PackageManager.GET_PERMISSIONS);
    for(PackageInfo pInfo:appinstall)
    {
        String[] reqPermission=pInfo.requestedPermissions;
        if(reqPermission!=null)
        {
            for(int i=0;i<reqPermission.length;i++)
            {
                if (((String)reqPermission[i]).equals("android.permission.RECORD_AUDIO"))
                {
                    killPackage(pInfo.packageName.toString());
                    break;
                }
            }
        }
    }       
}

为了杀掉一个包

private void killPackage(String packageToKill)
{
    ActivityManager actvityManager = 
        (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
    final List<RunningAppProcessInfo> procInfos = 
        actvityManager.getRunningAppProcesses();
    for (RunningAppProcessInfo runningAppProcessInfo : procInfos) 
    {
        if(runningAppProcessInfo.processName.equals(packageToKill)) 
        {
            android.os.Process.sendSignal(runningAppProcessInfo.pid, 
                                android.os.Process.SIGNAL_KILL);
            actvityManager.killBackgroundProcesses(packageToKill);
        }           
    }       
}

您可以在计时器中调用 iterateInstalledApps ,因为 Android 会立即重新启动应用程序。如果您继续终止该应用程序,它将无法记录任何内容。在打电话时使用通话录音机进行测试。


1
投票

我对 Android 不太了解,但如果无法获得对麦克风的独占访问权限,您可以采取的一种方法是监视具有麦克风权限的应用程序(如果存在),并使用 root 关闭它们。或者,当您的应用程序运行时,您可以删除此类应用程序的广播侦听器,就像某些自动运行管理器所做的那样。


1
投票

Android 的问题在于,您无法直接在应用程序中访问硬件(无论是否是原生的),Android 为管理硬件的硬件实现了服务器,您的应用程序连接到它们并获取这些服务器提供的内容。

有一个来自 android 人员的精彩视频在媒体框架案例中描述了这个模型。 这里是它的链接。

所以不,你不能在此模型中实施访问限制,也就是说其他答案代表了确保麦克风不被其他人访问的合理方法。


1
投票

我很确定您可以获得对麦克风的独占访问权限。如果我尝试同时使用两个

AudioRecord
,我会收到此错误:

E/AudioRecord: start() status -38

这实际上是我在互联网上找到的有关该主题的唯一信息:

https://groups.google.com/forum/#!topic/android-ndk/d7iQm0pyiC0

https://code.google.com/p/android/issues/detail?id=61643


0
投票

我在 Android oppo f7 手机上进行语音通话时遇到 Android 麦克风问题,请阅读以下内容并协助谢谢,

Android 手机视频通话麦克风未启用,并且似乎卡在进行视频通话时 Android 手机屏幕上出现的禁用设置上,出现麦克风图标/符号,并且其上出现对角渣,如何启用屏幕麦克风,点击它不会改变视频通话麦克风。您可以拨打03330374881卡拉奇号码接听,感谢您的帮助,

业余时间

© www.soinside.com 2019 - 2024. All rights reserved.