2014-01-07 4 views
0

Update: Я, к сожалению, не может получить решение моего вопроса еще ...я не могу видеть визуализатор во время записи голоса на Android

Я разрабатываю рекордер на андроид, и я хочу показать визуализировать во время записи. У меня есть классы. Когда я запускаю проект и записываю запись начала, я не вижу визуализатора во время записи. Я тестирую следующий код на реальном устройстве и добавляю разрешения для манифеста.

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 

Я использую с открытым исходным кодом визуализатора проекта для игры в «Феликс Палмер» и собственный добавить новый метод для блокфлейты ссылку визуализатора. Я думаю, что нужно запускать отлично. Но на самом деле все показывается для моего рекордера. (код не имеет какой-либо ошибки) Как я могу решить свою проблему и увидеть визуализатор? Это VisualizerView.java класс ...

import java.util.HashSet; 
import java.util.Set; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.Config; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Matrix; 
import android.graphics.Paint; 
import android.graphics.PorterDuff.Mode; 
import android.graphics.PorterDuffXfermode; 
import android.graphics.Rect; 
import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.media.audiofx.Visualizer; 
import android.util.AttributeSet; 
import android.view.View; 
import com.pheelicks.visualizer.renderer.Renderer; 

public class VisualizerView extends View { 

    private byte[] mBytes; 
    private byte[] mFFTBytes; 
    private Rect mRect = new Rect(); 
    private Visualizer mVisualizer; 

    private Set<Renderer> mRenderers; 

    private Paint mFlashPaint = new Paint(); 
    private Paint mFadePaint = new Paint(); 

    public VisualizerView(Context context, AttributeSet attrs, int defStyle) 
    { 
    super(context, attrs); 
    init(); 
    } 

    public VisualizerView(Context context, AttributeSet attrs) 
    { 
    this(context, attrs, 0); 
    } 

    public VisualizerView(Context context) 
    { 
    this(context, null, 0); 
    } 

    private void init() { 
    mBytes = null; 
    mFFTBytes = null; 

    mFlashPaint.setColor(Color.argb(122, 255, 255, 255)); 
    mFadePaint.setColor(Color.argb(238, 255, 255, 255)); // Adjust alpha to change how quickly the image fades 
    mFadePaint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); 

    mRenderers = new HashSet<Renderer>(); 
    } 
//----------------------------------------------- 
    public void link(MediaRecorder recorder) 
    { 
    if(recorder == null) 
    { 
     throw new NullPointerException("Cannot link to null MediaPlayer"); 
    } 
    mVisualizer = new Visualizer(0); 
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); 

    Visualizer.OnDataCaptureListener datacaptureListener1=new Visualizer.OnDataCaptureListener() 
    { 

     @Override 
     public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, 
       int samplingRate) 
     { 
      // TODO Auto-generated method stub 
       updateVisualizer(bytes); 
     } 

     @Override 
     public void onFftDataCapture(Visualizer visualizer, byte[] bytes, 
       int samplingRate) 
     { 
      // TODO Auto-generated method stub 
      updateVisualizerFFT(bytes); 
     } 
    }; 
     mVisualizer.setDataCaptureListener(datacaptureListener1,Visualizer.getMaxCaptureRate() /2,false,true); 
     mVisualizer.setEnabled(true); 
    } 

    //----------------------------------------------- 

Это AudioRecorder.java ...

public class AudioRecorder 
{ 
    private String name=""; 
    private static int id=0; 
    private MediaRecorder recorder = new MediaRecorder(); 
    private String path=null; 
    VisualizerView mVisualizerView; 
    private Context context=null; 
    //----------------------------------------------- 
    public AudioRecorder(Context context) 
    { 
     this.context=context; 
    } 

    //-----------------------------------------------   

    public void Record() throws IOException 
     { 

      recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      recorder.setOutputFile(this.path); 
      LayoutInflater inflater = LayoutInflater.from(context); 
      View view = inflater.inflate(R.layout.recorder1, null); 
      mVisualizerView = (VisualizerView)view.findViewById(R.id.visualizer1); 
       mVisualizerView.link(recorder); 
       addLineRenderer(); 
      try 
      { 
       recorder.prepare(); 
      } 
      catch (IllegalStateException e) 
      { 
       e.printStackTrace(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
      try 
      { 
       System.out.println("****"); 
       recorder.start(); 
      } 
      catch (Exception e) 
      { 
      } 

     } 

     //------------------------------------------  

     public void stopRecord() throws IOException 
     {   
      recorder.stop(); 
      recorder.release(); 

     } 

И это визуализатор в моем XML.

<LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:background="@drawable/highlight_shared" 
       android:orientation="vertical" 
       android:paddingLeft="10dp" 
       android:paddingRight="10dp" 
       android:paddingTop="5dp" > 

       <FrameLayout 
        android:layout_width="fill_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:background="@drawable/corner_liner" > 
       <com.pheelicks.visualizer.VisualizerView 
        android:id="@+id/visualizer1" 
        android:layout_width="match_parent" 
        android:layout_height="fill_parent"/> 
       </FrameLayout> 
      </LinearLayout> 
+0

см. Https://github.com/steelkiwi/AndroidRecording, i Надеюсь, что может помочь вам –

+0

Вы инициализируете Vizualizer с помощью выходного микса 0. Вы должны инициализировать его звуковой сессией вашего рекордера. – Tenfour04

+0

@ Tenfour04 Но в версии 2.3.3 этот метод не поддерживается. и я не хочу изменить версию на верхнюю. как это можно сделать? – sarah

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^