Я застрял в проблеме, пытающейся вызвать метод из другого класса (когда когда-либо я вызываю метод из этого класса, я получаю сбой с помощью NullPointerException, кроме того, когда это статическая функция. render.Update() и получить выход LogCat из -.>http://pastebin.com/njjxDiQZAndroid - Null Pointer Exception
11-26 17:14:40.532: E/MediaPlayer(29755): Should have subtitle controller already set
11-26 17:14:40.752: E/AndroidRuntime(29755): FATAL EXCEPTION: main
11-26 17:14:40.752: E/AndroidRuntime(29755): Process: com.coursework.courseworkapp, PID: 29755
11-26 17:14:40.752: E/AndroidRuntime(29755): java.lang.NullPointerException
11-26 17:14:40.752: E/AndroidRuntime(29755): at com.coursework.courseworkapp.Visual.updateVisualizer(Visual.java:73)
11-26 17:14:40.752: E/AndroidRuntime(29755): at com.coursework.courseworkapp.Visual$1.onWaveFormDataCapture(Visual.java:48)
11-26 17:14:40.752: E/AndroidRuntime(29755): at android.media.audiofx.Visualizer$NativeEventHandler.handleCaptureMessage(Visualizer.java:669)
11-26 17:14:40.752: E/AndroidRuntime(29755): at android.media.audiofx.Visualizer$NativeEventHandler.handleMessage(Visualizer.java:700)
11-26 17:14:40.752: E/AndroidRuntime(29755): at android.os.Handler.dispatchMessage(Handler.java:102)
11-26 17:14:40.752: E/AndroidRuntime(29755): at android.os.Looper.loop(Looper.java:137)
11-26 17:14:40.752: E/AndroidRuntime(29755): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-26 17:14:40.752: E/AndroidRuntime(29755): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 17:14:40.752: E/AndroidRuntime(29755): at java.lang.reflect.Method.invoke(Method.java:515)
11-26 17:14:40.752: E/AndroidRuntime(29755): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-26 17:14:40.752: E/AndroidRuntime(29755): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-26 17:14:40.752: E/AndroidRuntime(29755): at dalvik.system.NativeStart.main(Native Method)
Любая помощь будет оценена я действительно озадачены здесь
Первый класс
package com.coursework.courseworkapp;
import java.util.Set;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import android.media.MediaPlayer;
import android.media.audiofx.Visualizer;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
public class Visual{
byte[] fft;
byte[] mFFTBytes;
byte[] mBytes;
private Visualizer mVisualizer;
Render render;
private Rect mRect = new Rect();
private Paint mFlashPaint = new Paint();
private Paint mFadePaint = new Paint();
Bitmap mCanvasBitmap;
Canvas mCanvas;
public int Test(MediaPlayer player){
mVisualizer = new Visualizer(player.getAudioSessionId());
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
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);
mVisualizer.setEnabled(true);
return player.getAudioSessionId();
}
public void updateVisualizer(byte[] bytes) {
mBytes = bytes;
}
public void updateVisualizerFFT(byte[] bytes) {
mFFTBytes = bytes;
render.Update();
//render.invalidate()
}
public byte[] getFFT(){
return mFFTBytes;
}
}
рендер Класс
package com.coursework.courseworkapp;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.media.audiofx.Visualizer;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class Render extends View {
public Render(Context context) {
super(context);
setMinimumWidth(800);
setMinimumHeight(1000);
setFocusable(true);
}
public void Update(){
//Will have code here after fix crash.
}
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.RED);
//Will add more code here.
}
}
MainActivity.Java - Как я Visualise.java
public class MainActivity extends Activity {
private MediaPlayer mPlayer;
Visual visualize = new Visual();
Render render;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
render = new Render(this);
((LinearLayout) findViewById(R.id.root)).addView(render, 0);
//Log.d("Freq", "test");
mPlayer = MediaPlayer.create(this, R.raw.test2);
mPlayer.setLooping(true);
mPlayer.start();
//Log.d("Freq", "test");
Handler handler = new Handler();
Runnable runnable = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
int i = visualize.Test(mPlayer);
//render.invalidate();
}
};
handler.postDelayed(runnable, 100);
/*byte[] fft = visualize.getFFT();
if(fft != null){
Toast.makeText(this,"yey",Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(this,"nope",Toast.LENGTH_LONG).show();
}*/
/* THis part didn't work, Why? Check the other example */
//Log.w("Freq", String.valueOf(fft.length));
/*for(int i = 0; i < fft.length; i++){
String s = new String();
Log.w("Freq", String.valueOf(fft[i]));
}*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void tryDraw(){
//render.Update();
}
}
вывесить LogCat здесь. – khubaib
Кажется, что это происходит, поскольку 'bytes' являются нулевыми. –
Что такое строка 73 'Visual.java' ?. – Raghunandan