安卓:"不能初始化可视化引擎" [英] Android : "cannot initialize visualizer engine"
问题描述
我已经开始为Android编程的3天前,今天我想利用机器人阿比部分班级做一些更加困难。
我发现类展示台,并在第一学尝试我有一个问题。我读了不同的论坛上许多人谁后有同样的问题:无法初始化可视化引擎
我添加requierd使用许可权到的Manifest.xml
<清单的xmlns:机器人=http://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()
{
@覆盖
公共无效onWaveFormDataCapture(可视化可视化工具,字节[]字节,
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屋!