Hopefully, a basic (school project) question:
In the code that follows, I am trying to define an instance method in Alerts.java in order to generate a ringtone when a condition is met in SensorService.java.
For debugging, I added Log.d and a 'return string'- both work wonderfully from Alerts.java.
For the life of me, I cannot get the ringtone code to work from Alerts.java. If I place the ringtone code in SensorService.java- no issues. However, I want to implement at least 3 or 4 different types of alerts (and would prefer to contain this code in Alerts.java-- keeping SensorService.java readable/manageable).
filename: SensorService.java
[...]
public class SensorService extends Service implements SensorEventListener {
[...]
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
Log.d("ADebugTag", Float.toString(x));
Alerts al = new Alerts ();
String myInstanceString = al.audible();
System.out.println(myInstanceString);
// Generate an audible tone when Sensor detects movement.
if ( x > 2) al.audible();
}
[...]
filename: Alerts.java
[...]
public class Alerts {
[...]
public String audible () {
Log.d("1", "tick!");
Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtoneSound = RingtoneManager.getRingtone(context, ringtoneUri);
ringtoneSound.play();
return "This is an instance function.";
}
[...]
DEBUG Console:
12-15 14:29:49.994 12899-12899/com.pikpocket.pikpocket E/RingtoneManager﹕
Failed to open ringtone content://settings/system/alarm_alert:
java.lang.NullPointerException
12-15 14:29:49.994 12899-12899/com.pikpocket.pikpocket W/dalvikvm﹕
threadid=1: thread exiting with uncaught exception (group=0x41569438)
12-15 14:29:49.994 12899-12899/com.pikpocket.pikpocket E/AndroidRuntime﹕
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.pikpocket.pikpocket.Alerts.audible(Alerts.java:31)
at
com.pikpocket.pikpocket.SensorService.onSensorChanged(SensorService.java:78)
at
android.hardware.SystemSensorManager$ListenerDelegate$1.handleMessage(SystemSensorManager.java:250)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4918)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
at dalvik.system.NativeStart.main(Native Method)
Thanks in advance!