Android Visualizer 实现崩溃
我正在尝试实现 Android Visualizer 类。我已经查找了其他问题线程,但仍然遇到致命错误。在我看来,这一切都应该正常工作,无论出于何种原因 AVD 不断崩溃。
首先,我使用权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
这是我的 logcat:
12-21 15:10:46.983: D/dalvikvm(642): Not late-enabling CheckJNI (already on)
12-21 15:10:48.823: D/MediaPlayer(642): Couldn't open file on client side, trying server side
12-21 15:10:53.603: E/AudioEffect(642): set(): AudioFlinger could not create effect, status: -22
12-21 15:10:53.603: E/visualizers-JNI(642): Visualizer initCheck failed -4
12-21 15:10:53.613: E/Visualizer-JAVA(642): Error code -4 when initializing Visualizer.
12-21 15:10:53.613: E/Visual Ex(642): Cannot initialize Visualizer engine, error: -4
12-21 15:10:53.964: D/gralloc_goldfish(642): Emulator without GPU emulation detected.
和我的代码:
package MediaPlayer.namespace;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.audiofx.Visualizer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class MediaPlayerActivity extends Activity
{
Visualizer visual;
int formattedVizData[];
byte rawWaveForm[];
int cont = 0xFF;
public void onCreate(Bundle savedInstanceState)
{
//start
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
///start media player & visualizer.
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
// Create the Visualizer object and attach it to our media player.
try{
visual = new Visualizer(mediaPlayer.getAudioSessionId()); // this line causing Exception
visual.setEnabled(true);
visual.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
}
catch(Exception ex)
{
Log.e("Visual Ex", ex.getMessage());
}
}
}
I am trying to implement the Android Visualizer class. I have looked up other trouble threads but I am still getting a fatal error. This all looks to me like it should work correctly, for whatever reason the AVD keeps on crashing.
First off, I am using the permissions:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
Here is my logcat:
12-21 15:10:46.983: D/dalvikvm(642): Not late-enabling CheckJNI (already on)
12-21 15:10:48.823: D/MediaPlayer(642): Couldn't open file on client side, trying server side
12-21 15:10:53.603: E/AudioEffect(642): set(): AudioFlinger could not create effect, status: -22
12-21 15:10:53.603: E/visualizers-JNI(642): Visualizer initCheck failed -4
12-21 15:10:53.613: E/Visualizer-JAVA(642): Error code -4 when initializing Visualizer.
12-21 15:10:53.613: E/Visual Ex(642): Cannot initialize Visualizer engine, error: -4
12-21 15:10:53.964: D/gralloc_goldfish(642): Emulator without GPU emulation detected.
And my code:
package MediaPlayer.namespace;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.audiofx.Visualizer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class MediaPlayerActivity extends Activity
{
Visualizer visual;
int formattedVizData[];
byte rawWaveForm[];
int cont = 0xFF;
public void onCreate(Bundle savedInstanceState)
{
//start
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
///start media player & visualizer.
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
// Create the Visualizer object and attach it to our media player.
try{
visual = new Visualizer(mediaPlayer.getAudioSessionId()); // this line causing Exception
visual.setEnabled(true);
visual.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
}
catch(Exception ex)
{
Log.e("Visual Ex", ex.getMessage());
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我有同样的问题,所以尝试添加
AndroidManifest.xml 文件中的权限
另外,如果您不想看到奥迪波形,您应该在画布或其他东西中显示它...
工作示例:
}
这是 Android 媒体播放器音频波形可视化的完整工作示例...我希望它能帮助您解决问题...
Jani L
I have same problem, so try to add
permission in AndroidManifest.xml file
Also if you wan`t to see that audi wave, you hould show it in canvas or something ...
Working example :
}
This is a full working example of android media player audio wave visualization... I hope it will help you with your solution ...
Jani L
使用 Visualizer 有一些重要的事情。
api级别
必须等于或大于9。Visualizer引擎
,错误:-1表示RECORD_AUDIO权限
是丢失的。
Visualizer 引擎
,错误:-4 表示由于参数错误而操作失败
。价值。展示台的配置有问题,您没有正确设置展示台。另请参阅我的此处的答案。
注意
参数 (audioSession) 系统范围内唯一的音频会话标识符。如果
audioSession
不为0,则可视化器
将附加到同一音频会话中的MediaPlayer或AudioTrack。否则,Visualizer
将应用于输出混合。There are some important things for using Visualizer.
api level
must be equal to or greater than 9.Visualizer engine
, error: -1 meansRECORD_AUDIO permission
ismissing.
Visualizer engine
, error: -4 meansOperation failed due to bad parameter
. value. something bad in the configuration of the Visualizer, you don't properly setup Visualizer.And also see my answer here.
Note
Parameters (audioSession) system wide unique audio session identifier. If
audioSession
is not 0, thevisualizer
will be attached to the MediaPlayer or AudioTrack in the same audio session. Otherwise, theVisualizer
will apply to the output mix.@Kaushal28、@ihsan、gaozp、@Big Money
-3 错误代码表示 ERROR_NO_INIT
注意: https://developer.android.com/reference/kotlin/ android/media/audiofx/Visualizer
我有同样的经历并使用了AudioRecorder的audioSessionId。
如果你检查Visualizer的文档,你只能使用MediaPlayer和AudioTrack,如下所示。
@Kaushal28, @ihsan,gaozp, @Big Money
-3 error code means ERROR_NO_INIT
Note: https://developer.android.com/reference/kotlin/android/media/audiofx/Visualizer
I had the same experience and used the AudioRecorder's audioSesstionId.
If you check the documentation of Visualizer, you can use only MediaPlayer and AudioTrack as shown below.
您缺少互联网权限
You are missing Internet permission
启用 Visulizer 后,您无法对它的对象进行任何更改。因此,只需交换到如亲爱的代码所示的行即可。
请参阅此链接以获得最佳示例https://github.com/felixpalmer/android-visualizer
U cant make any changes to object of visulizer after enabling to it. So just interchange to lines as shown in the belove code.
Refere to this link for best example https://github.com/felixpalmer/android-visualizer
完成所有操作后,如果可视化未启动,请尝试 Visualizationview.startRendering()
after doing all if visualization doesnt start then try
visualizationview.startRendering()