2017-12-23 22 views
-1

このアプリケーションはAndroid搭載の携帯電話で動作しますが、Android Wearの時計を使用しているときは、録画ボタンを押した後にクラッシュします。 誰かがオーディオレコーディングアプリのサンプルコードを投稿できますか?アンドロイドウェアにオーディオを録音する方法は?

これまでの進捗状況を示す現在のコードです。

Javaアクティビティ:

import android.app.*; 
import android.os.*; 
import android.widget.*; 
import android.app.*; 
import android.os.*; 
import android.content.*; 
import android.Manifest; 
import android.content.pm.PackageManager; 
import android.util.*; 
import android.view.*; 
import java.io.*; 
import android.media.*; 
import android.provider.*; 


public class WearableActivity extends Activity { 
    private Button play; 
    private Button record; 
    private Button stop; 
    private MediaRecorder myAudioRecorder; 
    private String outputFile; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_wearable); 

     play = (Button) findViewById(R.id.play); 
     stop = (Button) findViewById(R.id.stop); 
     record = (Button) findViewById(R.id.record); 
     //stop.setEnabled(false); 
     // play.setEnabled(false); 


     outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp"; 
     myAudioRecorder = new MediaRecorder(); 
     myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
     myAudioRecorder.setOutputFile(outputFile); 



     record.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        myAudioRecorder.prepare(); 
        myAudioRecorder.start(); 
       } catch (IllegalStateException ise) { 
        // make somthing 
       } catch (IOException ioe) { 
        // make somthing 
       } 

       record.setEnabled(false); 
       stop.setEnabled(true); 

       Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     stop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       myAudioRecorder.stop(); 
       myAudioRecorder.release(); 
       myAudioRecorder = null; 
       record.setEnabled(true); 
       stop.setEnabled(false); 
       play.setEnabled(true); 
       Toast.makeText(getApplicationContext(), "Audio Recorder successfully", Toast.LENGTH_LONG).show(); 

      } 
     }); 
     play.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       MediaPlayer mediaPlayer = new MediaPlayer(); 

       try { 
        mediaPlayer.setDataSource(outputFile); 
        mediaPlayer.prepare(); 
        mediaPlayer.start(); 

        Toast.makeText(getApplicationContext(), "Playing Audio", Toast.LENGTH_LONG).show(); 
       } catch (Exception e) { 
        // make something 
       } 
      } 
     }); 
    } 
} 

wearable.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical"> 
    <Button 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="record" 
     android:id="@+id/record" /> 
    <Button 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="stop" 
     android:id="@+id/stop" /> 
    <Button 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="play1" 
     android:id="@+id/play" /> 
</LinearLayout> 

たManifest.xml:それはできないだろうので

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mycompany.Zer0"> 
    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission 
     android:name="android.permission.RECORD_AUDIO" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.DeviceDefault.Light"> 
     <activity 
      android:name=".WearableActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action 
        android:name="android.intent.action.MAIN" /> 
       <category 
        android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

(私は次の行を追加しました私はそれらなしで編集を提出する...)

完全に異なるアプローチを試すか、時計アプリで動作するように電話アプリを変えることはできますか?

+0

をちょっと両方のオプションは私にとってオーケーです、ありがとうございました。 – user9134447

答えて

0

これを試してください。これは、摩耗マイクを使用してオーディオを録音してから再生します。 https://github.com/googlesamples/android-WearSpeakerSample

これがAPK建てです: https://drive.google.com/open?id=1z6lwVoWh89gbGz43c_6PNPVS4Os6s4nu

私はグーグルでも、それを入れているウォッチフェイスと遊ぶ: https://play.google.com/store/apps/details?id=com.jorc.android.wearable.watchface&hl=en

+0

Androidスタジオで試しましたが、うまく動作しません。 – user9134447

+0

は、ウォッチフェイスにサークルボタンが含まれている場合、Google Playを数時間で表示したり、答えに共有するAPKを使用したりしています。 – Amir

+0

こんにちは、ありがとう、それはとてもいいです。 最後に動作します。すぐにあなたのアプリを変更しないでください、私はもう少しあなたのようにそれを取得する時間を持ってみましょう。ありがとうございました:) niceeeeeeeeeeeeeeeeeeeeeeee – user9134447

関連する問題