마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

백그라운드에서 녹음되는 앱 질문입니다

0 추천
package com.example.psa987.recorderservice;
//RecordService.java
import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

import java.io.IOException;

/**
 * Created by psa98 on 2017-06-06.
 */

public class RecordService extends Service {
    private  static final String Log_Tag = "RecorderService";
    private MediaRecorder recorder =  null;
    private  static String filename = null;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public void onCreate() {
        //서비스가 처음으로 실행되면 ~하는 동작

    }

    @Override
    public void onDestroy() {
        //서비스가 중지되면 녹음을 중지한다
        Toast.makeText(this, "Record Service가 중지되었습니다.", Toast.LENGTH_LONG).show();
        Log.d(Log_Tag, "onDestroy()");
        recorder.stop();
        recorder.release();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //서비스가 시작 될 때마다 녹음을 시작한다

        filename = Environment.getExternalStorageDirectory().getAbsolutePath();
        filename += "/Record.3gp";
        if (recorder == null) {
            recorder = new MediaRecorder();
            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//마이크 사용
            recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//파일 확장자 설정
            recorder.setOutputFile(filename);
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// 인코더 설정

            try {
                recorder.prepare();
            } catch (IOException e) {
                Log.e(Log_Tag, "prepare() failed");
            }
            Toast.makeText(this, "Record Service가 시작되었습니다.", Toast.LENGTH_LONG).show();
            Log.d(Log_Tag, "onStart()");
            recorder.start();//녹음 시작


        } else {
            Toast.makeText(this, "Record Service가 정지되었습니다.", Toast.LENGTH_LONG).show();
            Log.d(Log_Tag, "onDestroy()");
            recorder.stop();
            recorder.release();
            recorder = null;
        }
        return super.onStartCommand(intent, flags, startId);
    }
}


 

package com.example.psa987.recorderservice;
//MainActivity.java
import android.content.Intent;
import android.media.MediaRecorder;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity implements View.OnClickListener {
private  static final String Log_Tag = "RecorderService";
    Button record;
    private MediaRecorder recorder = null;

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

        record = (Button) findViewById(R.id.record);// 녹음
        record.setOnClickListener(this);
    }
    public  void onClick(View v) {
        if(recorder == null){
            Log.d(Log_Tag, "onClick() record ");
            startService(new Intent(this, RecordService.class));
        record.setText("녹음 중지");
    } else {
            Log.d(Log_Tag, "onClick() record ");
            stopService(new Intent(this, RecordService.class));
            recorder = null;
            record.setText("녹음 시작");

        }
    }
}
 
녹음 버튼을 누르면 녹음이 시작되었다고 나오는데 파일은 없네요
onCreate에 여러가지 써 봤다가 아닌것 같아서 비워놨는데
어떤 식으로 해야 할지 알려주세요
 
얀발 (120 포인트) 님이 2017년 6월 6일 질문

2개의 답변

0 추천
ㅇㅅㅇㅇㅅㅇㅇㅅㅇㅇㅅㅇㅇㅅㅇㅇㅅㅇㅇㅅㅇㅇㅅㅇ
익명사용자 님이 2017년 6월 6일 답변
0 추천
코드 바꾸고 테스트 했더니 잘 됩니다 ㅠㅠ
익명사용자 님이 2017년 6월 6일 답변
...