安卓:"不能初始化可视化引擎" [英] Android : "cannot initialize visualizer engine"

查看:1638
本文介绍了安卓:"不能初始化可视化引擎"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开始为Android编程的3天前,今天我想利用机器人阿比部分班级做一些更加困难。
我发现类展示台,并在第一学尝试我有一个问题。我读了不同的论坛上许多人谁后有同样的问题:无法初始化可视化引擎

我添加requierd使用许可权到的Manifest.xml

 <清单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=org.program.fourier
    安卓版code =1
    机器人:=的versionName1.0>    <使用许可权的android:NAME =android.permission.RECORD_AUDIO/>
    <使用许可权的android:NAME =android.permission.MODIFY_AUDIO_SETTINGS/>    <用途-SDK
        安卓的minSdkVersion =10
        机器人:targetSdkVersion =15/>    <应用
        机器人:图标=@绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME
        机器人:主题=@风格/ AppTheme>        <活动
            机器人:名字=。mainFFT
            机器人:标签=@字符串/ title_activity_main_fft>
            &所述;意图滤光器>
                <作用机器人:名字=android.intent.action.MAIN/>                <类机器人:名字=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;
    < /用途>< /清单>

接下来我试图解决这个问题,但我不能。
这是我的全code:

 包org.program.fourier;进口android.os.Bundle;
进口android.app.Activity;
进口android.util.Log;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.support.v4.app.NavUtils;进口android.media.audiofx.Visualizer;
进口android.media.audiofx.Visualizer.OnDataCaptureListener;
进口android.media.MediaPlayer;
进口android.media.AudioManager;公共类mainFFT延伸活动{    MediaPlayer的MPLAYER;
    展示台可见;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main_fft);        MPLAYER = MediaPlayer.create(这一点,R.raw.sight);
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);        尝试
        {
            MPLAYER prepare()。
        }
        赶上(例外前){Log.w(异常,前+); }        尝试
        {
            可见=新的可视化工具(mPlayer.getAudioSessionId());
        //vis.setDataCaptureListener(this,20,真正的,真实的);
        }
        赶上(例外前){Log.w(异常,前+); }
        mPlayer.start();
    }
    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        。getMenuInflater()膨胀(R.menu.main_fft,菜单);
        返回true;
    }
}

和最后一个问题是,它抛出IllegalStateException异常时,我想执行的Mplayer。prepare()方法。

这是全LogCat中的消息:

  18 07-06:33:17.141:E /跟踪(833):错误打开跟踪文件:没有这样的文件或目录(2)
07-06 18:33:17.591:E / MediaPlayer的(833):prepareAsync称为状态8
07-06 18:33:17.591:W /异常(833):java.lang.IllegalStateException
07-06 18:33:17.621:E / AudioEffect(833):集():AudioFlinger无法创建效果,状态:-22
07-06 18:33:17.621:E /展示台-JNI(833):展示台initCheck失败-4
07-06 18:33:17.621:E /展示台-JAVA(833):错误code -4初始化展台时,。
07-06 18:33:17.621:W /异常(833):了java.lang.RuntimeException:无法初始化可视化引擎,错误:-4
07-06 18:33:18.482:I /编舞(833):跳过337帧!该应用程序可能会做它的主线程的工作太多了。
07-06 18:33:18.551:D / gralloc_goldfish(833):无仿真模拟GPU检测。


解决方案

这工作的例子 Github上

 公共无效链接(MediaPlayer的播放器)
  {
    如果(球员== NULL)
    {
      抛出新的NullPointerException异常(无法链接到空的MediaPlayer);
    }    //创建可视化对象,并将其连接到我们的媒体播放器。
    mVisualizer =新的可视化工具(player.getAudioSessionId());
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);    //通过可视化的数据VisualizerView传递
    Visualizer.OnDataCaptureListener captureListener =新Visualizer.OnDataCaptureListener()
    {
      @覆盖
      公共无效onWaveFor​​mDataCapture(可视化可视化工具,字节[]字节,
          INT采样速率)
      {
        updateVisualizer(字节);
      }      @覆盖
      公共无效onFftDataCapture(可视化可视化工具,字节[]字节,
          INT采样速率)
      {
        updateVisualizerFFT(字节);
      }
    };    mVisualizer.setDataCaptureListener(captureListener,
        Visualizer.getMaxCaptureRate()/ 2,真实,真实);    //展台启用和禁用当我们与流完成
    mVisualizer.setEnabled(真);
    player.setOnCompletionListener(新MediaPlayer.OnCompletionListener()
    {
      @覆盖
      公共无效onCompletion(MediaPlayer的媒体播放器)
      {
        mVisualizer.setEnabled(假);
      }
    });
  }

,并检查 AudioFxDemo 在Android开发者网站和

I've started programming for Android 3 days ago, and today I wanted to do something more difficult using some classes from android Api. I find class Visualizer and at first attemp I had a problem. I read many post on different forums people who had the same problems : cannot initialize visualizer engine.

I added requierd uses-permission to a Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.program.fourier"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".mainFFT"
            android:label="@string/title_activity_main_fft" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Next I've tried to fix this problem but I can't. This is my full code:

package org.program.fourier;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

import android.media.audiofx.Visualizer;
import android.media.audiofx.Visualizer.OnDataCaptureListener;
import android.media.MediaPlayer;
import android.media.AudioManager;

public class mainFFT extends Activity {

    MediaPlayer mPlayer;
    Visualizer vis;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_fft);

        mPlayer = MediaPlayer.create(this, R.raw.sight);
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        try
        {
            mPlayer.prepare();
        }
        catch(Exception ex){ Log.w("ExCePtIoN", ex+""); }

        try
        {
            vis = new Visualizer(mPlayer.getAudioSessionId());
        //vis.setDataCaptureListener(this, 20, true, true);
        }
        catch(Exception ex){ Log.w("ExCePtIoN", ex+""); }


        mPlayer.start();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_fft, menu);
        return true;
    }


}

And last problem is that it throw IllegalStateException when I want to execute mPlayer.prepare() method.

this is full LogCat messages:

07-06 18:33:17.141: E/Trace(833): error opening trace file: No such file or directory (2)
07-06 18:33:17.591: E/MediaPlayer(833): prepareAsync called in state 8
07-06 18:33:17.591: W/ExCePtIoN(833): java.lang.IllegalStateException
07-06 18:33:17.621: E/AudioEffect(833): set(): AudioFlinger could not create effect, status: -22
07-06 18:33:17.621: E/visualizers-JNI(833): Visualizer initCheck failed -4
07-06 18:33:17.621: E/Visualizer-JAVA(833): Error code -4 when initializing Visualizer.
07-06 18:33:17.621: W/ExCePtIoN(833): java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4
07-06 18:33:18.482: I/Choreographer(833): Skipped 337 frames!  The application may be doing too much work on its main thread.
07-06 18:33:18.551: D/gralloc_goldfish(833): Emulator without GPU emulation detected.

解决方案

Working example from Github

 public void link(MediaPlayer player)
  {
    if(player == null)
    {
      throw new NullPointerException("Cannot link to null MediaPlayer");
    }

    // Create the Visualizer object and attach it to our media player.
    mVisualizer = new Visualizer(player.getAudioSessionId());
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);

    // Pass through Visualizer data to VisualizerView
    Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
    {
      @Override
      public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
          int samplingRate)
      {
        updateVisualizer(bytes);
      }

      @Override
      public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
          int samplingRate)
      {
        updateVisualizerFFT(bytes);
      }
    };

    mVisualizer.setDataCaptureListener(captureListener,
        Visualizer.getMaxCaptureRate() / 2, true, true);

    // Enabled Visualizer and disable when we're done with the stream
    mVisualizer.setEnabled(true);
    player.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
      @Override
      public void onCompletion(MediaPlayer mediaPlayer)
      {
        mVisualizer.setEnabled(false);
      }
    });
  }

and also check AudioFxDemo in Android developer site and .

这篇关于安卓:&QUOT;不能初始化可视化引擎&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆