Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用AlarmManager未正确设置报警_Android_Alarmmanager - Fatal编程技术网

Android 使用AlarmManager未正确设置报警

Android 使用AlarmManager未正确设置报警,android,alarmmanager,Android,Alarmmanager,我对android开发相当陌生,我的capstone项目团队希望我们的项目由android应用程序警报控制。 我遵循了一些在线指南获取启动代码,我可以让应用程序打开,所有按钮都可以工作,但警报本身不会触发。 我曾经 设置后,logcat会显示警报,而我刚刚设置的警报不会显示,而是显示明天早上的警报 以下是我的主要方法: public class pancake_alarm extends Activity { AlarmManager alarmManager; private Pending

我对android开发相当陌生,我的capstone项目团队希望我们的项目由android应用程序警报控制。 我遵循了一些在线指南获取启动代码,我可以让应用程序打开,所有按钮都可以工作,但警报本身不会触发。 我曾经

设置后,logcat会显示警报,而我刚刚设置的警报不会显示,而是显示明天早上的警报

以下是我的主要方法:

public class pancake_alarm extends Activity {

AlarmManager alarmManager;
private PendingIntent pendingIntent;
private TimePicker alarmTimePicker;
private static pancake_alarm inst;
private TextView alarmTextView;

int pancake_quant = 0;

public static pancake_alarm instance() {
    return inst;
}

@Override
public void onStart() {
    super.onStart();
    inst = this;
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pancake_alarm);
    alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker);
    alarmTextView = (TextView) findViewById(R.id.alarmText);
    ToggleButton alarmToggle = (ToggleButton) findViewById(R.id.alarmToggle);
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    final Button OneButton;
    final Button TwoButton;
    final Button ThreeButton;
    final Button FourButton;

    OneButton = (Button) findViewById(R.id.one_button);
    OneButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pancake_quant = 1;
        }
    });

    TwoButton = (Button) findViewById(R.id.two_button);
    TwoButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pancake_quant = 2;
        }
    });

    ThreeButton = (Button) findViewById(R.id.three_button);
    ThreeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pancake_quant =3;
        }
    });

    FourButton = (Button) findViewById(R.id.four_button);
    FourButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pancake_quant = 4;
        }
    });
}

public void onToggleClicked(View view) {
    // for debugging
    String str = "TAG";
    Log.v(str, "Toggle Clicked");

    if (((ToggleButton) view).isChecked()) {
        Log.d("MyActivity", "Alarm On");
        // Update pancake quantity string
        setPancakeQuant(pancake_quant);
        setPancakeTime(1);

        Calendar calendar = Calendar.getInstance();
        if (Build.VERSION.SDK_INT >= 23 ) {
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
            Log.v(str, "Finding Hour, SDK 23+");
        }else {
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
            Log.v(str, "Finding Hour, SDK < 23");
        }
        if (Build.VERSION.SDK_INT >= 23 ) {
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getMinute());
            Log.v(str, "Finding Minute, SDK 23+");
        }else {
            calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentMinute());
            Log.v(str, "Finding Minute, SDK < 23");
        }
        Intent myIntent = new Intent(pancake_alarm.this, AlarmReciever.class);
        pendingIntent = PendingIntent.getBroadcast(pancake_alarm.this, 0, myIntent, 0);
        Log.v(str, "Well it got to this fuckin line at least");
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        String nextAlarm = Settings.System.getString(getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED);
        Log.v(str, nextAlarm);
    } else {
        alarmManager.cancel(pendingIntent);
        setAlarmText("");
        Log.d("MyActivity", "Alarm Off");
        // Update pancake quantity string
        setPancakeQuant(0);
        setPancakeTime(0);
    }

}
public class pancake\u报警扩展活动{
AlarmManager AlarmManager;
私人吊挂帐篷;
私人计时器报警器计时器;
专用静态煎饼报警仪;
私有文本视图报警文本视图;
int pancake_quant=0;
公共静态pancake_报警实例(){
返回仪表;
}
@凌驾
public void onStart(){
super.onStart();
inst=这个;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u pancake\u alarm);
alarmTimePicker=(TimePicker)findViewById(R.id.alarmTimePicker);
alarmTextView=(TextView)findViewById(R.id.alarmText);
ToggleButton alarmToggle=(ToggleButton)findViewById(R.id.alarmToggle);
alarmManager=(alarmManager)getSystemService(报警服务);
最后一个按钮一个按钮;
最终按钮两个按钮;
最终按钮三个按钮;
最终按钮四个按钮;
OneButton=(按钮)findViewById(R.id.one_按钮);
OneButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
煎饼数量=1;
}
});
TwoButton=(按钮)findViewById(R.id.two_按钮);
TwoButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
煎饼数量=2;
}
});
ThreeButton=(按钮)findViewById(R.id.three_按钮);
ThreeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
煎饼数量=3;
}
});
FourButton=(按钮)findViewById(R.id.four_按钮);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
煎饼数量=4;
}
});
}
已勾选公共空间(视图){
//用于调试
String str=“TAG”;
Log.v(str,“点击切换”);
如果(((切换按钮)视图).isChecked()){
日志d(“我的活动”、“警报开启”);
//更新煎饼数量字符串
设置煎饼量(煎饼量);
设定煎饼时间(1);
日历=Calendar.getInstance();
如果(Build.VERSION.SDK_INT>=23){
calendar.set(calendar.HOUR\u OF_DAY,alarmTimePicker.getHour());
Log.v(str,“查找时间,SDK 23+”);
}否则{
calendar.set(calendar.HOUR OF_DAY,alarmTimePicker.getCurrentHour());
Log.v(str,“查找时间,SDK<23”);
}
如果(Build.VERSION.SDK_INT>=23){
calendar.set(calendar.HOUR\u OF_DAY,alarmTimePicker.getMinute());
Log.v(str,“查找分钟,SDK 23+”;
}否则{
calendar.set(calendar.HOUR OF_DAY,alarmTimePicker.getCurrentMinute());
Log.v(str,“查找分钟,SDK<23”);
}
Intent myIntent=新Intent(pancake\u alarm.this,AlarmReceiver.class);
PendingEvent=PendingEvent.getBroadcast(pancake_alarm.this,0,myIntent,0);
Log.v(str,“至少到了这条该死的线”);
alarmManager.set(alarmManager.RTC_唤醒,calendar.getTimeInMillis(),PendingContent);
String nextAlarm=Settings.System.getString(getContentResolver(),Settings.System.NEXT\u报警\u格式化);
Log.v(str,nextAlarm);
}否则{
alarmManager.cancel(挂起事件);
setAlarmText(“”);
日志d(“我的活动”、“警报关闭”);
//更新煎饼数量字符串
setPancakeQuant(0);
设置煎饼时间(0);
}
}
我也可以张贴我的收信人和服务,但因为他们似乎都没有收到,我不知道他们是否有用

我是不是漏掉了什么明显的东西

谢谢

编辑:这是清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.javapapers.androidalarmclock">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name="com.example.dustin.pancake_alarm.pancake_alarm"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service
        android:name="com.example.dustin.pancake_alarm.AlarmService"
        android:enabled="true" />
    <receiver android:name="com.example.dustin.pancake_alarm.AlarmReciever" />
</application>


下一个\u ALARM\u FORMATTED
不会显示您在代码中设置的报警。您的清单中是否有
元素用于
AlarmReceiver
?我在主活动的清单中有AlarmReceiver在receiver中,但我是否也需要接收器和服务的清单?我不确定是否在跟踪您。你只有一个清单。除此之外,你需要一个
元素用于
AlarmReceiver
,一个
元素用于
服务
类。这些元素必须在
你的问题中才能发布清单,我们可以看一下。啊,我明白了。很抱歉,我是新手,所以我感到困惑。清单发布这项工作,谢谢!我以前设置不正确,这帮助我找到了错误。谢谢!
下一个\u ALARM\u FORMATTED
不会显示您在代码中设置的报警。您的清单中是否有
元素用于
AlarmReceiver
?我在清单中的主要活动的接收器中有AlarmReceiver,但我需要它吗接收者和服务的anifest?我不确定我是否在跟踪你。你只有一个清单。除此之外,你需要一个
元素用于
AlarmReceiver
,一个
元素用于
服务
类。这些元素必须在
问题中才能发布清单,我们可以有一个look、 啊,我明白了。很抱歉,我是新手,所以我感到困惑。Manifest Posted这很有效,谢谢!我以前设置不正确,这帮助我找到了错误。谢谢!
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.javapapers.androidalarmclock">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name="com.example.dustin.pancake_alarm.pancake_alarm"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service
        android:name="com.example.dustin.pancake_alarm.AlarmService"
        android:enabled="true" />
    <receiver android:name="com.example.dustin.pancake_alarm.AlarmReciever" />
</application>