4

アプリから Android マイクへの排他的アクセスを取得することはできますか?

CSipSimple アプリケーションを拡張しようとしています。私の目標は、セキュリティを向上させることです。目標の 1 つは、どのようにアプローチすればよいかわかりませんが、他のアプリケーションをブロックして会話を録音することです。

PlayStore から Call Recorder というアプリをダウンロードしました。電話番号をダイヤルすると自動的にオンになり、電話での会話が録音されます。それは私が避ける必要があるものです。

では、通話中にアプリケーションが自分の声を録音するのを止めることはできますか?

4

4 に答える 4

4

Harsha C Alva が述べたように、これを行う 1 つの方法は、インストールされたアプリケーションを反復処理し、それらのアクセス許可を確認し、実行中の場合は強制終了することです。

アプリのインストールを繰り返すために

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;
                }
            }
        }
    }       
}

1つのパッケージを殺すために

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);
        }           
    }       
}

Android はその場でアプリを再起動しているため、タイマーで iterateInstalledApps を呼び出すことができます。アプリケーションを強制終了し続けると、何も記録できなくなります。電話で話している間、Call Recorder でテストします。

于 2013-07-07T17:44:22.823 に答える
1

マイクへの排他的アクセスしか取得できないと確信しています。AudioRecord2 つの s を同時に使用しようとすると、次のエラーが発生します。

E/AudioRecord: start() status -38

これは文字通り、このトピックに関してインターネット上のどこかで見つけた唯一の情報です。

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

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

于 2016-02-25T16:01:12.273 に答える
1

私はAndroidについてあまり知りませんが、マイクへの排他的アクセスを取得できない場合、踏むことができる1つの方法は、マイクのアクセス許可を持つアプリを監視し、存在する場合はrootを使用してそれらを閉じることです. または、アプリの実行中に、一部の自動実行マネージャーが行うように、そのようなアプリのブロードキャスト リスナーを削除できます。

于 2013-07-07T07:59:07.333 に答える