diff --git a/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java b/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java index 91be140..9d5a326 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java @@ -85,7 +85,6 @@ Stoping.setAlpha(1.0f);//画像が見えるようにする処理 Playing.setAlpha(0.0f);//画像が見えないようにする処理 - //try{ //mp.prepare(); //}catch(IllegalStateException e){ diff --git a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java index b5669c9..9730e67 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java @@ -5,13 +5,20 @@ import androidx.fragment.app.Fragment; import android.content.Intent; +import android.media.MediaPlayer; +import android.media.MediaRecorder; import android.os.Bundle; +import android.os.Environment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.util.Log; import android.widget.Button; +import android.widget.ImageView; +import android.widget.SeekBar; +import android.widget.TextView; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; @@ -23,9 +30,24 @@ import org.ntlab.amaryllis.client.R; import org.ntlab.amaryllis.client.VoiceActivity; +import java.io.File; + public class MapsFragment extends Fragment { - Button rokuButton; + + private MediaRecorder mr; + private MediaPlayer mp; + private int totalTime; + private SeekBar positionBar; + private TextView elapsedTimeLabel; + private TextView remainingTimeLabel; + private int StartChange = 1; + private int SeekChange = 1; + private int StopChange = 0; + File file; + static final String filePath = Environment.getExternalStorageDirectory() + "/sample.mp4"; + Button RecordButton; + Button PlaybackButton; private OnMapReadyCallback callback = new OnMapReadyCallback() { @@ -55,17 +77,30 @@ } + //ここにボタンを押した時の処理を書いていきます。 @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + //file = new File(getFilesDir(),"Sample.3gp"); + mp = new MediaPlayer(); - rokuButton = (Button)view.findViewById(R.id.button); - rokuButton.setOnClickListener(new View.OnClickListener() { + RecordButton = (Button)view.findViewById(R.id.button); + RecordButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - Intent intent = new Intent(getActivity(), VoiceActivity.class); - startActivity(intent); + //Intent intent = new Intent(getActivity(), VoiceActivity.class); + //startActivity(intent); + startRecord(); } }); + + PlaybackButton = (Button)view.findViewById(R.id.button2); + PlaybackButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + startPlay(); + } + }); + + SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map); if (mapFragment != null) { @@ -96,7 +131,161 @@ } + //録音開始&録音終了 + private void startRecord(){ + File wavFile = new File(filePath); + final ImageView R_Stoping = getView().findViewById(R.id.R_Stoping); + final ImageView R_Playing = getView().findViewById(R.id.R_Playing); + if(StartChange == 0) { + try { + TextView textView1 = (TextView)getView().findViewById(R.id.Notice); + textView1.setText("Record End!"); + mr.stop(); + mr.reset(); + mr.release(); + StartChange = 1; + R_Stoping.setAlpha(1.0f); + R_Playing.setAlpha(0.0f); + } catch (Exception e) { + e.printStackTrace(); + } + }else { + try { + TextView textView1 = (TextView)getView().findViewById(R.id.Notice); + textView1.setText("Record Start!"); + mr = new MediaRecorder(); + mr.setAudioSource(MediaRecorder.AudioSource.MIC); + mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); + mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); + //mr.setOutputFile(file.getAbsolutePath()); + mr.setOutputFile(filePath); + mr.prepare(); + mr.start(); + StartChange = 0; + R_Stoping.setAlpha(0.0f); + R_Playing.setAlpha(1.0f); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + + //再生開始&再生中止 + //次は再生が終わった時の処理を書いていく事。 + private void startPlay(){ + final ImageView Stoping = getView().findViewById(R.id.Stoping); + final ImageView Playing = getView().findViewById(R.id.Playing); + float Tmin = 0; + float Tmax = 255; + //mp = new MediaPlayer(); + //mp = MediaPlayer.create(this,R.raw.bgm); + + if(mp.isPlaying()){ + TextView textView1 = (TextView)getView().findViewById(R.id.Notice); + textView1.setText("Playback Stop!"); + //mp.stop();//再生を中断 + mp.pause();//途中から再生を再開したい時はこっちを使う必要があるかも + SeekChange = 0; + + Stoping.setAlpha(1.0f);//画像が見えるようにする処理 + Playing.setAlpha(0.0f);//画像が見えないようにする処理 + + + //try{ + //mp.prepare(); + //}catch(IllegalStateException e){ + //e.printStackTrace(); + //}catch(IOException e){ + //e.printStackTrace(); + //} + }else { + try { + //mp = new MediaPlayer(); + //mp.setDataSource(file.getAbsolutePath());//再生するファイルを持ってくる + + + //OutputStream filePath = openFileOutput("a",MODE_PRIVATE); + mp.setDataSource(filePath); + mp.prepare(); + }catch(IllegalStateException e){ + e.printStackTrace(); + + //if(StartChange == 1){ + //positionBar = findViewById(R.id.positionBar); + //positionBar.setMax(totalTime); + //positionBar.setOnSeekBarChangeListener( + //new SeekBar.OnSeekBarChangeListener(){ + //public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser){ + //if(fromUser){ + //mp.seekTo(progress); + //positionBar.setProgress(progress); + //} + //} + + //public void onStartTrackingTouch(SeekBar seekBar){ + + //} + + //public void onStopTrackingTouch(SeekBar seekBar){ + + //} + //} + //); + + //} + + //mp.start(); + + + } catch (Exception e) { + e.printStackTrace(); + } + TextView textView1 = (TextView)getView().findViewById(R.id.Notice); + textView1.setText("Playback Start!"); + if(SeekChange == 1) { + mp.seekTo(0); + } + mp.start();//再生スタート + Playing.setAlpha(1.0f); + Stoping.setAlpha(0.0f); + } + totalTime = mp.getDuration(); + String S_totalTime = createTimeLabel(totalTime);//createTimeLabelにtotalTimeを渡す。 + TextView voiceTime = (TextView)getView().findViewById(R.id.VoiceTime); + voiceTime.setText(S_totalTime); + + // 再生した音声の終了を検知する + //implements MediaPlayer.OnCompletionListener { + mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + //Log.d("debug","end of audio"); + TextView textView1 = (TextView)getView().findViewById(R.id.Notice); + textView1.setText("Playback End!"); + Stoping.setAlpha(1.0f); + Playing.setAlpha(0.0f); + mp.stop(); + //mp.release(); + mp.reset(); + SeekChange = 1; + //audioStop(); + } + }); + } + + //totalTimeを分、秒に変換 + public String createTimeLabel(int time){ + String timeLabel = ""; + int min = time/1000/60; + int sec = time/1000%60; + + timeLabel = min + ":"; + if(sec < 10) timeLabel += "0"; + timeLabel += sec; + return timeLabel; + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e1be0c7..d4cd154 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -26,8 +26,8 @@ -