2011-11-15 3 views
0

간단한 보이스 레코더 응용 프로그램을 만들기 위해 많은 코드를 읽었습니다. 그것은 아주 잘 작동하며 꽤 똑바로하지만 지금은 텍스트 상자와 같은 간단한 유틸리티를 사용하여 사용자의 현재 위치를 표시하는 몇 가지 추가 기능과 통합하려고합니다. 나는 자바 프로그래밍을 잘 이해하지만 안드로이드를 배우기 때문에 일을하는 방법이 약간 불안하다. 나는 많은 튜토리얼과 예제를 통해 읽었고, 나는 많은 다른 접근법을 시도했지만 아무것도 작동하지 않는 것 같다. Eclipse 및 Android SDK를 사용하여 버전 8을 개발 중입니다. 나는 또한 매우 도움이되는 것으로 입증 된 애플 리케이션을 테스트하기 위해 안드로이드 폰을 가지고있다.내 안드로이드 음성 레코더 코드를 통합하여 사용자의 현재 위치도 표시하려면 어떻게해야합니까?

내 코드는 음성 녹음기로 작동하는이 앱과 작동합니다. 어떤 도움을 크게 감상 할 수있다 :

import android.app.Activity; 
import android.widget.LinearLayout; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.media.MediaRecorder; 
import android.media.MediaPlayer; 
import java.io.IOException; 


public class AndroidVoiceActivity extends Activity{ 
private static final String LOG_TAG = "AudioRecordTest"; 
private static String mFileName = null; 

private RecordButton mRecordButton = null; 
private MediaRecorder mRecorder = null; 

private PlayButton mPlayButton = null; 
private MediaPlayer mPlayer = null; 

/***************** Record Button ********************/ 
private void onRecord(boolean start) { 
    if (start) { 
     startRecording(); 
    } else { 
     stopRecording(); 
    } 
} 

private void startRecording() { 
    mRecorder = new MediaRecorder(); 
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    mRecorder.setOutputFile(mFileName); 
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

    try { 
     mRecorder.prepare(); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
    } 

    mRecorder.start(); 
} 

private void stopRecording() { 
    mRecorder.stop(); 
    mRecorder.release(); 
    mRecorder = null; 
} 

class RecordButton extends Button { 
    boolean mStartRecording = true; 

    OnClickListener clicker = new OnClickListener() { 
     public void onClick(View v) { 
      onRecord(mStartRecording); 
      if (mStartRecording) { 
       setText("Stop recording"); 
      } else { 
       setText("Start recording"); 
      } 
      mStartRecording = !mStartRecording; 
     } 
    }; 

    public RecordButton(Context ctx) { 
     super(ctx); 
     setText("Start recording"); 
     setOnClickListener(clicker); 
    } 
} 

/***************** Play Button ********************/ 
private void startPlaying() { 
    mPlayer = new MediaPlayer(); 
    try { 
     mPlayer.setDataSource(mFileName); 
     mPlayer.prepare(); 
     mPlayer.start(); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
    } 
} 

private void stopPlaying() { 
    mPlayer.release(); 
    mPlayer = null; 
} 

private void onPlay(boolean start) { 
    if (start) { 
     startPlaying(); 
    } else { 
     stopPlaying(); 
    } 
} 

class PlayButton extends Button { 
    boolean mStartPlaying = true; 

    OnClickListener clicker = new OnClickListener() { 
     public void onClick(View v) { 
      onPlay(mStartPlaying); 
      if (mStartPlaying) { 
       setText("Stop playing"); 
      } else { 
       setText("Start playing"); 
      } 
      mStartPlaying = !mStartPlaying; 
     } 
    }; 

    public PlayButton(Context ctx) { 
     super(ctx); 
     setText("Start playing"); 
     setOnClickListener(clicker); 
    } 
} 
/***************** File Saver ********************/ 

public AndroidVoiceActivity() { 
    mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    mFileName += "/audiorecordtest.3gp"; 
} 

/***************** On Create ********************/ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    //preparing linear layout 
    LinearLayout ll = new LinearLayout(this); 

    //record button 
    mRecordButton = new RecordButton(this); 
    ll.addView(mRecordButton, 
     new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      0)); 

    //play button 
    mPlayButton = new PlayButton(this); 
    ll.addView(mPlayButton, 
     new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      0)); 

    //setting linear layout 
    setContentView(ll); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    if (mRecorder != null) { 
     mRecorder.release(); 
     mRecorder = null; 
    } 

    if (mPlayer != null) { 
     mPlayer.release(); 
     mPlayer = null; 
    } 
} 

}

답변

1

당신은 안드로이드 개발자 문서

http://developer.android.com/guide/topics/location/obtaining-user-location.html

현재 주소를 표시하려면 한 번 봐 복용에 의해 시작한다, 지오 코더 살펴보기 :

http://developer.android.com/reference/android/location/Geocoder.html

+0

안녕하세요 크레이기,이 문서를 읽었지만 잘못된 방식으로 문제에 접근하고 있다고 생각합니다 ... 나는 내 대답에서 멀리 떨어져 있지는 않지만 뭔가 작동하지 않을 수도 있습니다. 난 내 자신의 질문에 대한 답변을 회신 적어도 5 시간 기다려야 할 stackoverflow에 대한 새로운 사용자가 있지만 그것은 가능한 솔루션으로 개발 한 코드입니다. 그 동안 나는 계속 발전 할 것입니다. 그러나 여러분이나 누군가가 아마도 몇몇 코드 샘플이나 일부 코드 응답 또는 튜토리얼로 도움을 줄 수 있다면 크게 감사하겠습니다. – AGE