1

現在、オーディオ録音の Android アプリを作成しています。ファイルは外部ストレージに保存されます。

MODE_PRIVATE のコンテキストで内部ストレージとして保存する方法を変更するとどうなりますか

ファイルの保存について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();
        dateInString = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(
                new Date()).toString();
        String fileName = "TVSSSSD_" + dateInString + " record.3gp";

        SDCardpath = Environment.getExternalStorageDirectory();
        myDataPath = new File(SDCardpath.getAbsolutePath()
                + "/.My Recordings");

        // mydir = context.getDir("media", Context.MODE_PRIVATE);
        if (!myDataPath.exists())
            myDataPath.mkdir();


        audiofile = new File(myDataPath + "/" + fileName);

        Log.d("path", myDataPath.getAbsolutePath());
        // File fileWithinMyDir = new File(mydir, fileName);
        // audiofile = fileWithinMyDir;
        // FileOutputStream out = new FileOutputStream(fileWithinMyDir);

        recorder = new MediaRecorder();
        recorder.reset();
        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());

        recorder.prepare();

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

以下は、オーディオファイルをロードするための私のコードです

recordList = new ArrayList<String>();
    File directory = Environment.getExternalStorageDirectory();
    file = new File(directory + "/My Recordings");
    File list[] = file.listFiles();
    for (int i = 0; i < list.length; i++) {
        recordList.add(list[i].getName());
    }

    Collections.sort(recordList, Collections.reverseOrder());

    listview = (ListView) findViewById(R.id.listView);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1,
            recordList);


    listview.setAdapter(adapter);

    listview.setTextFilterEnabled(true);

    listview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long arg3) {
            // TODO Auto-generated method stub


            String product = ((TextView) view).getText().toString();
            String fullPathAudio = file.getAbsolutePath() + "/" + product;

            File resultFile = new File(fullPathAudio);

            Intent intent = new Intent();
            intent.setAction(android.content.Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(resultFile), "audio/*");
            startActivity(intent);
        }
    });
4

1 に答える 1

2

使用するgetFilesDir()

 SDCardpath = getFilesDir();
        myDataPath = new File(SDCardpath.getAbsolutePath()
                + "/.My Recordings");

        // mydir = context.getDir("media", Context.MODE_PRIVATE);
        if (!myDataPath.exists())
            myDataPath.mkdir();


        audiofile = new File(myDataPath + "/" + fileName);

詳細については、内部ストレージの使用を参照してください

于 2013-05-03T05:27:47.127 に答える