Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android上写入.txt文件-什么都没有发生_Java_Android_File_Android External Storage - Fatal编程技术网

Java 在android上写入.txt文件-什么都没有发生

Java 在android上写入.txt文件-什么都没有发生,java,android,file,android-external-storage,Java,Android,File,Android External Storage,我有一个android应用程序,它正在录制音频,并将其以audiorecorder的名称输出到手机的本地存储器中。 现在我想在同一个目录中存储一个.txt文件 我已经尝试了几种方法从堆栈溢出,应用程序没有抱怨,但没有存储的.txt,因为它应该。我不明白为什么 感兴趣的方法是:CreateTxt和generateNote。这些人没有做他们应该做的 这些方法在startR.setOnClickListener方法中使用 有人知道为什么吗?先谢谢你 package xxxx; import andr

我有一个android应用程序,它正在录制音频,并将其以audiorecorder的名称输出到手机的本地存储器中。 现在我想在同一个目录中存储一个.txt文件

我已经尝试了几种方法从堆栈溢出,应用程序没有抱怨,但没有存储的.txt,因为它应该。我不明白为什么

感兴趣的方法是:CreateTxt和generateNote。这些人没有做他们应该做的

这些方法在startR.setOnClickListener方法中使用

有人知道为什么吗?先谢谢你

package xxxx;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;

import static android.provider.AlarmClock.EXTRA_MESSAGE;

public class DataCollectionActivity extends AppCompatActivity {
    private MediaPlayer mediaPLayer;
    private MediaRecorder recorder;
    private String OUTPUT_FILE;

    public Button GoToUserAcc;
    public Button GoToLogin;
    public Button GoToTest;

    // Permission Variables
    private static final String LOG_TAG = "AudioRecordTest";
    private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
    private static String mFileName = null;
    private boolean permissionToRecordAccepted = false;
    private String [] permissions = 
    {Manifest.permission.RECORD_AUDIO, 
    Manifest.permission.WRITE_EXTERNAL_STORAGE, 
    Manifest.permission.INTERNET};

    private static final int 
    REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION = 200;
    private boolean permissionToWriteExternalStoragedAccepted = 
    false;

    private static final int REQUEST_INTERNET_PERMISSION = 200;
    private boolean permissionToUseInternetAccepted = false;

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


        //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        //setSupportActionBar(toolbar);

        Button startR = (Button) findViewById(R.id.Bstart);
        Button stopR = (Button) findViewById(R.id.Bstop);
        Button playRecording = (Button) findViewById(R.id.playBtn);
        Button stopPlaying = (Button) findViewById(R.id.stopBtn);
        final TextView statusTV;
        statusTV = (TextView) findViewById(R.id.tStatus);

        OUTPUT_FILE= Environment.getExternalStorageDirectory().
        getAbsolutePath()+"/audiorecorder.3gpp";


        ActivityCompat.requestPermissions(this, permissions, 
        REQUEST_RECORD_AUDIO_PERMISSION);

        /*------START recording BUTTON------*/

        startR.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                final TextView stv=statusTV;
                try {
                    beginRecording();
                    stv.setText("Recording");
                    //CreateTxt();
                    generateNote("MLdata", "sBody");
                    stv.setText("Created txt");
                } catch (Exception e) {
                    StringWriter sw = new StringWriter();
                    e.printStackTrace(new PrintWriter(sw));
                    String exceptionAsString = sw.toString();
                    stv.setText("Error");
                }
            }
        });

        /*------STOP BUTTON------*/

        stopR.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                final TextView stv=statusTV;
                try {
                    stopRecording();
                    stv.setText("Stopped");
                } catch (Exception e) {
                    StringWriter sw = new StringWriter();
                    e.printStackTrace(new PrintWriter(sw));
                    String exceptionAsString = sw.toString();
                    statusTV.setText("Error");
                    Log.d("here","dd",e);
                }
            }
        });


    }

    private void stopPlayback() throws Exception{
        if(mediaPLayer != null)
            mediaPLayer.stop();
    }
    private void playRecording() throws IOException {
        ditchMediaPLayer();
        mediaPLayer = new MediaPlayer();
        mediaPLayer.setDataSource(OUTPUT_FILE);
        mediaPLayer.prepare();
        mediaPLayer.start();

    }

    private void ditchMediaPLayer() {
        if (mediaPLayer != null) {
            try{
                mediaPLayer.release();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

    private void stopRecording() {
        if(recorder != null)
            recorder.stop();
    }
    private void beginRecording() throws Exception{
        ditchMediaRecorder();
        File outFile = new File(OUTPUT_FILE);
        //DataCollectionActivity dca = new DataCollectionActivity();
        //dca.CreateTxt();
        if (outFile.exists()) {
            outFile.delete();
        }

        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

        recorder.setOutputFormat(MediaRecorder.
        OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(OUTPUT_FILE);

        /*API constraints
        Container   WAV
        Encoding    PCM
        Rate    16K
        Sample Format   16 bit    OK
        Channels    Mono         OK
         */
        recorder.setAudioSamplingRate(16);
        //channel 1 equals mono, 2 eqals stereo
        recorder.setAudioChannels(1);

        recorder.prepare();
        recorder.start();
    }

    private void ditchMediaRecorder() {
        if(recorder != null)
            recorder.release();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        if (item.getItemId() == R.id.action_setting){
            Toast.makeText(DataCollectionActivity.this, "You have 
      clicked on setting action menu", Toast.LENGTH_SHORT).show();
        }

        if (item.getItemId() == R.id.action_about_us){
            Toast.makeText(DataCollectionActivity.this, "You have 
       clicked on about us action menu", Toast.LENGTH_SHORT).show();
            goToUserAccount();
        }

        return super.onOptionsItemSelected(item);
    }

    // Requesting permission to RECORD_AUDIO
    //fra android.com


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull 
    String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, 
    grantResults);

        switch (requestCode){
            case REQUEST_RECORD_AUDIO_PERMISSION:
                permissionToRecordAccepted  = grantResults[0] == 
     PackageManager.PERMISSION_GRANTED;
                break;
        }
        if (!permissionToRecordAccepted ) finish();

        //---ny permission ---
        super.onRequestPermissionsResult(requestCode, permissions, 
        grantResults);
        switch (requestCode){
            case REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION:
                permissionToWriteExternalStoragedAccepted  = 
        grantResults[0] == PackageManager.PERMISSION_GRANTED;
                break;
        }
        if (!permissionToRecordAccepted ) finish();

        //---ny permission ---
        super.onRequestPermissionsResult(requestCode, permissions, 
         grantResults);
        switch (requestCode){
            case REQUEST_INTERNET_PERMISSION:
                permissionToUseInternetAccepted  = grantResults[0] == 
         PackageManager.PERMISSION_GRANTED;
                break;
        }
        if (!permissionToRecordAccepted ) finish();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mMenuInflater = getMenuInflater();
        mMenuInflater.inflate(R.menu.menu_main, menu);
        return true;
    }

    /** Opens up new activity */
    //Vedrører tollbaren som ligenu ikke bliver brugt /virker ikke.
    public void goToUserAccount() {
        Intent intent = new Intent(this, UserAccountActivity.class);
        EditText editText = (EditText) 
    findViewById(R.id.action_about_us);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }

    //Metode som laver en writer.
    public void CreateTxt() throws  IOException {
        //concerning txt file
        int id = 0;
        String typeId = "S";

        EditText db = (EditText) findViewById(R.id.dbNoiseText);
        String dbString = db.getText().toString();

        EditText numPar = (EditText) 
        findViewById(R.id.participatorsText);
        String npar = numPar.getText().toString();

        EditText conversationBool = (EditText) 
        findViewById(R.id.CoverationText);
        String cBool = conversationBool.getText().toString();

        File f = new File(Environment.getExternalStorageDirectory().
        getAbsolutePath()+"dataForML.txt");
        try {
            System.out.print("enters try in createtxt");
            PrintWriter writer = new PrintWriter(f, "UTF-8");
            writer.println(dbString + ", ");
            writer.println(npar + ", ");
            writer.println(cBool + ", ");
            writer.println(typeId + id + ", ");
            writer.println(Environment.getExternalStorageDirectory().
            getAbsolutePath()+"/dataForML.txt");
            //Her skal den skrive binary. Metoden ligger i asrRequest
            writer.println("Path to Acceleroeter CSV file ");
            writer.println("\n");
            writer.println();
            writer.close();
            id++;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //OUTPUT_FILE= Environment.getExternalStorageDirectory().
    getAbsolutePath()+"/audiorecorder.3gpp";

    //generateNoteOnSD("MLdata", "sBody");
    public void generateNote(String sFileName, String sBody) {
        try {
            File root = new 
            File(Environment.getExternalStorageDirectory().
            getAbsolutePath(), "NotesML");
            if (!root.exists()) {
                root.mkdirs();
            }
            File gpxfile = new File(root, sFileName);
            FileWriter writer = new FileWriter(gpxfile);
            writer.append(sBody);
            writer.flush();
            writer.close();
            //Toast.makeText(context, "Saved", 
            Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void thirdTry(){
        String FILENAME = "hello_file";
        String string = "hello world!";
        try{
            FileOutputStream fos = openFileOutput(FILENAME, 
            Context.MODE_PRIVATE);
            fos.write(string.getBytes());
            fos.close();
        } catch (IOException e){
            e.printStackTrace();
        }

    }
}


layout xml comes here
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp"
    android:orientation="vertical"
    android:weightSum="1">

    <EditText
        android:id="@+id/dbNoiseText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="db noise"
        android:inputType="textPersonName"
        android:textAlignment="center"
        android:textSize="24sp" />

    <EditText
        android:id="@+id/participatorsText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="# participators"
        android:inputType="textPersonName"
        android:textAlignment="center"
        android:textSize="24sp" />

    <EditText
        android:id="@+id/CoverationText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Conversation? Y/N"
        android:inputType="textPersonName"
        android:textAlignment="center" />

    <Button
        android:id="@+id/Bstart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:text="Start Recording" />

    <Button
        android:id="@+id/Bstop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:text="Stop recording" />

    <TextView
        android:id="@+id/tStatus"
        android:layout_width="354dp"
        android:layout_height="42dp"
        android:text="status"
        android:textAlignment="center"
        android:textSize="24sp" />

</LinearLayout>

Manifest comes here
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="dk.itu.percomp17.jumanji">

    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <uses-permission android:name="android.permission.RECORD_AUDIO" 
/>
    <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category 
android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity android:name=".UserAccountActivity" />
        <activity android:name=".RegisterActivity" />
        <activity android:name=".LoginActivity"/>
        <activity android:name=".DataCollectionActivity"/>
        <activity android:name=".CallingjsActivity">
        </activity>
    </application>

</manifest>
xxxx包;
导入android.Manifest;
导入android.content.Context;
导入android.content.Intent;
导入android.content.pm.PackageManager;
导入android.media.MediaPlayer;
导入android.media.MediaRecorder;
导入android.os.Bundle;
导入android.os.Environment;
导入android.support.annotation.NonNull;
导入android.support.v4.app.ActivityCompat;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.io.StringWriter;
导入静态android.provider.AlarmClock.EXTRA_消息;
公共类DataCollectionActivity扩展了AppCompativeActivity{
私人媒体播放器;
专用媒体记录器;
私有字符串输出文件;
公共按钮GoToUserAcc;
公共按钮GoToLogin;
公共按钮GoToTest;
//权限变量
私有静态最终字符串日志\u TAG=“AudioRecordTest”;
私有静态最终整数请求\记录\音频\权限=200;
私有静态字符串mFileName=null;
private boolean PermissionRecordAccepted=false;
私有字符串[]权限=
{Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE\u外部存储,
Manifest.permission.INTERNET};
私有静态最终整数
请求\写入\外部\存储\权限=200;
私有布尔权限WriteExternalStoragedAccepted=
虚假的;
私有静态最终int请求\互联网\权限=200;
private boolean PermissionToSeInternetAccepted=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u data\u collec);
//Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
//设置支持操作栏(工具栏);
按钮startR=(按钮)findViewById(R.id.Bstart);
按钮停止R=(按钮)findViewById(R.id.Bstop);
按钮播放录制=(按钮)findViewById(R.id.playBtn);
按钮停止播放=(按钮)findViewById(R.id.stopBtn);
最终文本视图状态电视;
statusTV=(TextView)findViewById(R.id.tStatus);
OUTPUT\u FILE=Environment.getExternalStorageDirectory()。
getAbsolutePath()+“/audiorecorder.3gpp”;
ActivityCompat.requestPermissions(此、权限、,
请求(录制)(音频)(许可);;
/*------开始录制按钮------*/
startR.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终文本视图stv=状态电视;
试一试{
开始记录();
stv.setText(“录制”);
//CreateTxt();
生成日期(“MLdata”、“SBODE”);
stv.setText(“创建的txt”);
}捕获(例外e){
StringWriter sw=新的StringWriter();
e、 printStackTrace(新PrintWriter(sw));
字符串异常AsString=sw.toString();
stv.setText(“错误”);
}
}
});
/*------停止按钮------*/
stopR.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终文本视图stv=状态电视;
试一试{
停止录制();
stv.setText(“停止”);
}捕获(例外e){
StringWriter sw=新的StringWriter();
e、 printStackTrace(新PrintWriter(sw));
字符串异常AsString=sw.toString();
statusTV.setText(“错误”);
日志d(“此处”、“dd”、e);
}
}
});
}
私有void stopPlayback()引发异常{
如果(mediaPLayer!=null)
mediaPLayer.stop();
}
私有void playRecording()引发IOException{
ditchMediaPLayer();
mediaPLayer=新的mediaPLayer();
mediaPLayer.setDataSource(输出文件);
mediaPLayer.prepare();
mediaPLayer.start();
}
私有void ditchMediaPLayer(){
如果(mediaPLayer!=null){
试一试{
mediaPLayer.release();
}捕获(例外e){
e、 printStackTrace();
}
}
}
私有void stopRecording(){
if(记录器!=null)
录音机。停止();
}
私有void beginRecording()引发异常{
ditchMediaRecorder();
文件输出文件=新文件(输出文件);
//DataCollectionActivity dca=新的DataCollectionActivity();
//dca.CreateTxt();
if(outFile.exists()){
outFile.delete();
}
记录器=新的MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
setOutputFormat(MediaRecorder。
输出格式。三个GPP);
重新
// Once a file has been created, use this method to publicize
//the file as it can be seen !!
// But be sure to add "Context context;" outside of the method.
// Plus, remember to add "context = getApplicationContext ();" in the 
//onCreate () method.

public void scanFile(String path) {

    MediaScannerConnection.scanFile(context,
            new String[] { path }, null,
            new MediaScannerConnection.OnScanCompletedListener() {

                public void onScanCompleted(String path, Uri uri) {
                    Log.i("TAG", "Finished scanning " + path);
                }
            });
}