前提・実現したいこと
現在、androidstudioにてAudioRecordで音を録り、音の大きさに応じて
アプリ画面全体の色をリアルタイムに変えるというアプリを作りたいと思っています。
言語はKotlinを想定していましたが、情報を集めきれず、Javaに路線変更いたしました。
色は五段階程度を想定しております。
「録音」と表示されたボタンを押す
↓
録音を開始し、ボタンの表示が「停止」になる
↓
「停止」と表示されたボタンを押すと、録音は停止し、ファイル名「sample.3gp」にて音声が保存される。
というプログラムをJavaにて(見よう見まねで)作成しました。
しかし、「音量のログを表示する」「そのログを用いて画面を変化させる」という作業が
どのように記せばよいかわかっておりません…。
具体的にどのような処理をすればログを取得(あるいは表示)することができるのでしょう…。
ご教示いただけないでしょうか。
該当のソースコード
「録音」と表示されたボタンを押す
↓
録音を開始し、ボタンの表示が「停止」になる
↓
「停止」と表示されたボタンを押すと、録音は停止し、ファイル名「sample.3gp」にて音声が保存される。
MainActivity
1 2package com.example.test_recorder0415; 3 4import android.support.v7.app.AppCompatActivity; 5import android.os.Bundle; 6import java.io.IOException; 7import android.app. Activity; 8import android.media.MediaRecorder; 9import android.os.Bundle; 10import android.view.Menu; 11import android.view.View; 12import android.widget. Button; 13 14 15public class MainActivity extends AppCompatActivity { 16 17 private MediaRecorder rec; 18 boolean isRec= false; //G, 中カどうか 19 @Override 20 public void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R. layout.activity_main); 23 // MediaRecorderオブジェクトを準備 24 rec=new MediaRecorder(); 25 } 26// [録音]/. [停止]ボタンがクリックされた時の処理 27 public void onClick(View view) { 28 Button btnRecord = (Button) findViewById(R.id.btnRecord); 29 30//録音停止中の場合 31 32 if (!isRec) { 33 // MediaRecorderオブジェクトの準備 34 rec.setAudioSource(MediaRecorder.AudioSource.MIC); 35 rec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 36 rec.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 37 rec.setOutputFile("/mnt/sdcard/sample.3gp"); 38 try { 39 rec.prepare(); 40 } catch (IllegalStateException e) { 41 e.printStackTrace(); 42 } catch (IOException e) { 43 e.printStackTrace(); 44 } 45//録音開始 46 47 rec.start(); 48 isRec = true; 49 btnRecord.setText("停止"); 50 51//録音中の場合、録音を停止 52 } else { 53 54 rec.stop(); 55 rec.reset(); 56 isRec = false; 57 btnRecord.setText("録音"); 58 } 59 } 60 @Override 61 protected void onDestroy() { 62 super.onDestroy(); 63 rec.release(); 64 } 65}
activitymain
1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 <TextView 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="Hello World!" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintLeft_toLeftOf="parent" 15 app:layout_constraintRight_toRightOf="parent" 16 app:layout_constraintTop_toTopOf="parent" /> 17 18 <Button 19 android:id="@+id/btnRecord" 20 android:layout_width="match_parent" 21 android:layout_height="wrap_content" 22 android:layout_alignParentLeft="true" 23 android:layout_alignParentTop="true" 24 android:onClick="onClick" 25 android:text="録音" /> 26 27 28</android.support.constraint.ConstraintLayout>
試したこと
マニフェストには「マイク」と「SDカード」の利用許可を入れております。
上記のソースコードにて、録音しそれをSDカードに保存することはできたのですが
録音中に(録音している音の)音量を取得するということができておりません。
非常に初歩的な質問で申し訳ありませんが
ご教示いただけましたら幸いです。
あなたの回答
tips
プレビュー