0

我正在尝试通过创建带有密码保护和音频文件的文件夹来为 Android 创建媒体记录器。

但是现在我只能创建其他应用程序和Android智能手机用户可以访问的文件夹和音频文件。

实施密码保护的目的是为了不让其他应用程序或用户访问文件和文件夹,除非提供密码?

除了创建密码输入面板之外,还有什么想法可以实现这一点吗?

以下是我的代码。

public void onClick(View view) throws Exception {
    if (count == 0) {

        tbxRecordStatus.setText("Record");
        btnRecord.setText("Stop Record");
        Toast.makeText(MainActivity.this, "Recording Starts",
                Toast.LENGTH_SHORT).show();
        String dateInString =  new SimpleDateFormat(
                "yyyy-MM-dd-HH-mm-ss").format(new Date()).toString();
        String fileName = "TasB_" + dateInString + " record.3gp";
        SDCardpath = Environment.getExternalStorageDirectory();
        myDataPath = new File(SDCardpath.getAbsolutePath()  + "/My Recordings");
        if (!myDataPath.exists())
            myDataPath.mkdir();

        audiofile = new File(myDataPath + "/" + fileName);
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setAudioEncodingBitRate(16);
        recorder.setAudioSamplingRate(44100);
        recorder.setOutputFile(audiofile.getAbsolutePath());



        try
        {
         recorder.prepare();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        recorder.start();
        count++;

    } else {

        tbxRecordStatus.setText("Stop");
        btnRecord.setText("Start Record");
        Toast.makeText(MainActivity.this, "Recording Stops",
                Toast.LENGTH_SHORT).show();
        if (recorder != null) {
            recorder.stop();
            recorder.release();
            recorder = null;

        } else {
            tbxRecordStatus.setText("Warning!");
            Toast.makeText(MainActivity.this, "Record First",
                    Toast.LENGTH_SHORT).show();
        }
        count = 0;
    }
}
4

1 回答 1

3

如果您在外部存储中创建文件,那么按照设计,这些文件是世界可读的。如果您在目录中创建一个名为的文件.nomedia,则媒体扫描仪将忽略其中的文件,但如果其他应用程序去寻找它们,它们仍然可以读取它们。

如果您希望您的文件对您的应用程序是私有的,那么它们需要在Internal Storage中创建。此处创建的文件只能由您的应用程序访问(如果我们忽略具有根设备的用户)。但是,内部存储中的可用空间通常要少得多,这意味着它不适合存储大量数据,例如音频文件。例如,第 7.6.2 节中的 Android 4.0 兼容性定义指出,设备需要在所有应用程序之间共享至少 1GB 的内部存储空间。这在早期版本的 Android 中并不多,而且更少。

想到的唯一其他选择是加密存储在外部存储中的音频文件,因此虽然其他应用程序可以访问它们,但它们将无法播放存储的音频。 这个问题有一个答案,显示了如何使用CipherOutputStream来做到这一点。

于 2013-05-02T09:21:01.083 回答