2017-06-14 23 views
0

我想使用openFileInput來讀取代碼中生成的3gp文件,並保存在環境保存文件的任何位置。這甚至可能,如果沒有,我該如何解決這個問題? 下面是具體的方法:使用openFileInput讀取3gp文件,這有可能嗎?

public String readFile(String file){ 
     String rawdata = ""; 
     try{ 
      FileInputStream fis = openFileInput(file); 
      int size = fis.available(); 
      byte[] buffer = new byte[size]; 
      fis.read(buffer); 
      fis.close(); 
      rawdata = new String(buffer); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(ReceiveScreen.this, "Error reading file!", Toast.LENGTH_SHORT).show(); 
     } 
     return rawdata; 
    } 

,這裏是整個活動是否有幫助:

package com.example.wesle.noisemachine; 

import android.content.Intent; 
import android.media.MediaCodec; 
import android.media.MediaFormat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.AppCompatDrawableManager; 
import android.view.View; 
import android.widget.Button; 
import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.os.Environment; 
import android.widget.Toast; 

import java.io.FileInputStream; 
import java.io.IOException; 

public class ReceiveScreen extends AppCompatActivity { 

    private Button buttonStart, buttonStop, buttonPlay, buttonDecode; 
    private MediaRecorder mediaRecorder = new MediaRecorder(); 
    private String outputFile; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_receive_screen); 

     buttonStart = (Button) findViewById(R.id.buttonStart); 
     buttonStop = (Button) findViewById(R.id.buttonStop); 
     buttonPlay = (Button) findViewById(R.id.buttonPlay); 
     buttonDecode = (Button) findViewById(R.id.buttonDecode); 
     buttonStop.setEnabled(false); 
     buttonPlay.setEnabled(false); 
     outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp"; 
     mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mediaRecorder.setOutputFile(outputFile); 

     buttonStart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        mediaRecorder.prepare(); 
        mediaRecorder.start(); 
       } catch (IllegalStateException ise) { 
        System.out.println("ISE Catch"); 
       } catch (IOException ioe) { 
        System.out.println("IO Catch"); 

       } 
       buttonStart.setEnabled(false); 
       buttonStop.setEnabled(true); 


       Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show(); 


      } 
     }); 

     buttonStop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       mediaRecorder.stop(); 
       mediaRecorder.release(); 

       buttonStop.setEnabled(false); 
       buttonPlay.setEnabled(true); 
       buttonStart.setEnabled(true); 

       Toast.makeText(getApplicationContext(), "Recording Completed", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     buttonPlay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       MediaPlayer mediaPlayer = new MediaPlayer(); 

       try { 
        mediaPlayer.setDataSource(outputFile); 
        mediaPlayer.prepare(); 
        mediaPlayer.start(); 
       } catch (Exception e) { 
        System.out.println("E Catch"); 
       } 
       Toast.makeText(getApplicationContext(), "Recording Playing", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     buttonDecode.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       System.out.println(readFile("recording.3gp")); 

       Toast.makeText(getApplicationContext(), "Decoding", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     //Code for the back button 
     Button backbuttonR = (Button) findViewById(R.id.backbuttonR); 
     backbuttonR.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(ReceiveScreen.this, MainActivity.class)); 
      } 
     }); 
    } 

    public String readFile(String file){ 
     String rawdata = ""; 
     try{ 
      FileInputStream fis = openFileInput(file); 
      int size = fis.available(); 
      byte[] buffer = new byte[size]; 
      fis.read(buffer); 
      fis.close(); 
      rawdata = new String(buffer); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(ReceiveScreen.this, "Error reading file!", Toast.LENGTH_SHORT).show(); 
     } 
     return rawdata; 
    } 
} 

回答

0

這甚至可能

沒有,因爲openFileInput()沒有與Environment有任何關係。

我該如何解決這個問題?

使用new FileInputStream(),傳入一個File對象。您已創建File對象(outputFile)。

相關問題