Building 30 day alarm
I'm not familiar with Android, so just some generic note:


calendar.set(Calendar.DAY_OF_WEEK, 0);


What is this line supposed to do? Javadoc of DAY_OF_WEEK says the following:


  Field number for get and set indicating the day of the week. This field takes 
  values SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY.


Unfortunately, none of the mentioned constants has 0 as value. (SUNDAY = 1, MONDAY = 2. ..., FRIDAY = 6) You should use on the constants above here for better clarity.
I'd move the Calendar creation and and modification to a named method where the name explains the purpose of the method. It would be easier just reading the name of the method to figure out what contains the created Calendar instance than reading through the calls of setter methods.
The alarm variable is unused. Remove it.
(AlarmManager) getSystemService(Context.ALARM_SERVICE) is duplicated in the code. You could use the same object and call it twice or create a getAlarmManager() method which does the casting too to remove the duplication.
Calendar calendar = Calendar.getInstance();
calendar = Calendar.getInstance();


Could be simply

Calendar calendar = Calendar.getInstance();


It's the same.