Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android alarm not working

I've been struggling with this for hours. I've also checked the documentation and several topics. I found this code in two topics, both guys said the code was working perfectly, but not on my computer. The first Toast appears, but the second one never. What is wrong?

public class HelloAndroid2 extends Activity {  


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);   

    Intent intent = new Intent(this, AlarmReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
    intent, PendingIntent.FLAG_ONE_SHOT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10 * 1000), pendingIntent);
    Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

}

 public final class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();

    }
 }

}

like image 656
erdomester Avatar asked Jan 11 '11 17:01

erdomester


People also ask

Why do my phone alarms not work?

If the phone alarm is not working, simply go to the sound settings on your phone to cross-check, increase the volume, and assign a good, audible sound for the alarm. Here's how to do so: Open the Settings app on your phone, then click on. You'll see volume sliders for Media, Call, Alarm, and Ring.

Why doesn't my alarm go off on my Samsung phone?

@elmando: Please try opening the Phone app > Tap the 3 dots in the top right > Settings > Call alerts & ringtone > Allow alarm/notification sounds in call, and toggle this option on. Let me know if this helps.

Why is there no sound on my alarms?

Press the volume button if the alarm volume is too low or loud. You can change the Sounds and Haptics settings by going to settings > Sounds and Haptics. Make sure that your alarm sound isn't set to None if it only vibrates. Go to the clock app and tap the Alarm tab.


1 Answers

Actually you dont need to specify the action since you use the class AlarmReceiver.class in the intent.

In your AndroidManifest.xml, make sure you have a receiver definition within the <application> tags, something like:

<receiver android:name="AlarmReceiver">

Edit: Ok there are 2 ways to use your broadcast receiver.

1) From the code you have provided, AlarmReceiver.java that will contains:

public final class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();

    }
 }

and HelloAndroid2.java:

public class HelloAndroid2 extends Activity {  


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);   

    Intent intent = new Intent(this, AlarmReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
    intent, PendingIntent.FLAG_ONE_SHOT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10 * 1000), pendingIntent);
    Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

}

}

Like this, you can set your broadcast receiver to work with the AndroidManifest.xml and the tag <receiver ...>

2)2nd way. With this way, you can use just 1 file HelloWorld2.java:

In your activity, create your broadcast receiver and register it.

public class HelloWorld2 extends Activity {
    private SharedPreferences prefs;
    private String mName;


    BroadcastReceiver alarmReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();          
        }
    };


    public static final String ACTION_NAME = "com.helloworld.MYACTION";
    private IntentFilter myFilter = new IntentFilter(ACTION_NAME);


    @Override
    protected void onPause() {
        unregisterReceiver(alarmReceiver);
        super.onPause();
    }

    @Override
    protected void onResume() {
        registerReceiver(alarmReceiver, myFilter);
        super.onResume();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        registerReceiver(alarmReceiver, myFilter);

        Intent intent = new Intent(ACTION_NAME);        

        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
        intent, PendingIntent.FLAG_ONE_SHOT);

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10 * 1000), pendingIntent);
        Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();


    }
like image 109
ccheneson Avatar answered Sep 29 '22 21:09

ccheneson