gpt4 book ai didi

java - Android/Java - 从另一个文件调用 RingtoneManager 实例方法

转载 作者:行者123 更新时间:2023-11-30 10:52:41 25 4
gpt4 key购买 nike

希望是一个基本的(学校项目)问题:

在接下来的代码中,我试图在 Alerts.java 中定义一个实例方法,以便在满足 SensorService.java 中的条件时生成铃声。

为了调试,我添加了 Log.d 和一个“返回字符串”——两者都可以在 Alerts.java 中完美运行。

我这辈子都无法从 Alerts.java 获取铃声代码。如果我将铃声代码放在 SensorService.java 中 - 没有问题。但是,我想实现至少 3 或 4 种不同类型的警报(并且更愿意将此代码包含在 Alerts.java 中——保持 SensorService.java 可读/可管理)。

文件名: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();
}
[...]

文件名: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.";
}
[...]

调试控制台:

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)

提前致谢!

最佳答案

我遇到过好几次这种问题,我不知道为什么会这样,但我有一个可能适用于你的情况的解决方法。尝试在 al.audible() 调用上返回一个铃声对象,然后从 SensorService 播放它:

在 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 ();
Ringtone myRingtone = al.audible();
myRingtone.play();
}}

在 Alerts.java 中

public class Alerts {
public Ringtone audible () {
Log.d("1", "tick!");
Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtoneSound = RingtoneManager.getRingtone(context, ringtoneUri);
return ringtoneSound;
}}

如果这不能解决您的问题,您可能应该查看铃声路径。

希望对您有所帮助。

关于java - Android/Java - 从另一个文件调用 RingtoneManager 实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com