Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid - Null Pointer Exception
    primarykey
    data
    text
    <p>i'm stuck on a problem trying to call a method from another class (when ever I call a method from this class I get a crash with NullPointerException except from when it's a static function. I currently call render.Update() and get a logcat output of -> <a href="http://pastebin.com/njjxDiQZ" rel="nofollow">http://pastebin.com/njjxDiQZ</a></p> <pre><code>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) </code></pre> <p>Any help would be appreciated i'm really stumped here.</p> <h1>First Class</h1> <pre><code>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; } } </code></pre> <h1>The Render Class</h1> <pre><code>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. } } </code></pre> <h1>MainActivity.Java - How I start Visualise.java</h1> <pre><code>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 &lt; 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(); } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload