2011-11-15 22 views
0

爲了製作簡單的錄音機應用程序,我通讀了大量的代碼。它工作得很好,而且非常簡單,但現在我想將它與一些額外的功能集成在一起,使用簡單的實用程序顯示用戶的當前位置,如文本框。我非常瞭解Java編程,但我仍然在學習Android,所以我在如何做事方面有些不穩定。我已閱讀了許多教程和示例,我也嘗試了許多不同的方法,但似乎沒有任何工作。我正在開發使用Eclipse和Android SDK的版本8。我也有一個Android手機來測試已證明是非常有用的應用程序。我怎樣才能整合我的android錄音機代碼,以顯示用戶的當前位置?

這是我的代碼,這個工程和它的一個應用程序,作爲一個錄音機。任何幫助將不勝感激:

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

您應通過在Android開發者文檔

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

如果你想顯示當前的地址考慮看看開始了,看看Geocoder:

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

+0

嘿,Craigy,我已經閱讀了這些文件,但我相信我只是以一種不正確的方式接近問題......我可能離我的答案不遠,但有些東西只是不起作用。我是一個新的用戶stackoverflow,所以我需要等待至少5個小時回答我自己的問題的答案,但它是我用一個可能的解決方案開發的代碼。與此同時,我將繼續開發,但如果您或任何人都可以提供一些代碼示例或一些代碼答案或教程,我們將不勝感激。 – AGE

相關問題