Archive
Android – Scheduling an application to start later.
Recently I have been working on a simple application that should have the ability to start itself after a period of time, after the application is closed. Hopefully, it turned out that this is quite simple to implement, and to achieve this, the AlarmManager in conjuction with a BroadcastReceiver can be used.
The basic idea is as follows: the AlarmManger registers an intent, when the alarm goes off, the intent that had been registered automatically will start the target application if it is not already running. The BroadcastReceiver will be listening for that intent, and when the intent is received, it will start the desired activity from the application.
The broadcast receiver implementation looks like this:
public class OnAlarmReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(Globals.TAG, "BroadcastReceiver, in onReceive:");
// Start the MainActivity
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
Register the OnAlarmReceive in the AndroidManifest file:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
// ......
<receiver
android:name=".OnAlarmReceive" />
</application>
And finally, here’s how to setup the alarm:
/**
* Sets up the alarm
*
* @param seconds
* - after how many seconds from now the alarm should go off
*/
private void setupAlarm(int seconds) {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getBaseContext(), OnAlarmReceive.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
MainActivity.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Log.d(Globals.TAG, "Setup the alarm");
// Getting current time and add the seconds in it
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, seconds);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
// Finish the currently running activity
MainActivity.this.finish();
}
The last line from the code – finishing the current activity – is optional of course, but in case you need to finish the activity, here’s how to do.
For a live demo of the code, download the Amazing Cracked Screen application and see how it works. There you have the possibility to set up the delay in seconds when the application should start later and show the “broken” screen.
Amazing Cracked Screen
Hello everyone,
In this weekend I made a simple application just for fun – Amazing Cracked Screen, the main purpose being to trick your friends and make fun of them! Basically, what does the application is to simulate a broken phone screen.
The application includes 6 different broken screens, and provides the ability to set up a delay time when the app should start, so you can manage to give the phone to your friend.
Just start the application, select the desired broken screen and have fun!
Introducing “Even or Odd” – My First Android Game :)
Hello everyone,
I would like to introduce you the freshly cooked “Even or Odd” game, an addictive casual game for Android.
The idea of the game is pretty simple: you are given a series of numbers, and have 30 seconds at your disposal to answer if the given numbers are even or odd ones. Give a correct answer and you get +100 points, you give a wrong answer and you go down: -100 points. Try to give as many correct answers as you can in 30 sec.
This is my first attempt into this kind of Android apps. What was new from what I did previously, is that I made use of MediaPlayer to play sounds. Using MediaPlayer to play sounds will be the subject of another tutorial in the upcoming period of time. Stay tuned.
Give it a try and let me know your high score
.
Creating and Displaying a Custom Dialog in Android
In this post I would like to describe the process of creating and displaying a custom dialog. Though the Android documentation describes pretty well the topic, I faced some problems implementing it, and I would like to share my findings.
The final output should look like this:
1. The first issue I have encountered was that I was getting a BadTokenException in the onCreateDialog() method where I was instantiating the Dialog: android.view.WindowManager$BadTokenException: Unable to add window — token null is not for an application,
Context context=getApplicationContext(); Dialog dialog=new Dialog(context);
Well, though the Android documentation suggests to use getApplicationContext(); actually it turns out that this is not the proper way to do it and most likely it will throw an exception. The correct way is to use this, or “ActivityName”.this instead of getApplicationContext(). For example:
Context context=MainActivity.this; Dialog dialog=new Dialog(context);
2. The second issue I was facing was that I wanted to get rid off the standard dialog title.
Normally you would set the Dialog title with this:
dialog.setTitle("Dialog Title");
However, if you don’t want to display a standard title for your dialog, not calling the above line most probably won’t meet your expectations, because it will leave an empty space where the title should be.
Hopefully, this is an easy fix. Just call requestWindowFeature(Window.FEATURE_NO_TITLE); and you are done.
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
To sum up with a concrete working example, below I presented an implementation of a simple custom dialog.
custom_dialog.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="250dp" android:layout_height="match_parent" android:background="#8F1A3B" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:text="Custom Dialog" android:textSize="18dp" /> <Button android:id="@+id/restart" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Restart Game" /> </LinearLayout>
MainActivity:
public class MainActivity extends Activity {
Dialog dialog;
int DIALOG_GAME_RESTART=100;
@Override
public void onCreate(Bundle savedInstanceState) {
// ............
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_GAME_RESTART:
Context context=MainActivity.this;
dialog=new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
Button restart=(Button)dialog.findViewById(R.id.restart);
restart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
//whatever code you want to execute on restart
}
});
break;
default: break;
}
return dialog;
}
}
ITMoldova – My First Android Application.
Although it has passed awhile since I published my first android application on Google Play, and I published already my second Android App meanwhile, I decided to write about it as well, as almost all my posts from this blog till now are findings and experience gained while I was working on ITMoldova app.
ITMoldova.com is a Moldavian site that provides daily IT News for romanian speaking people. The main purpose of Android application is to check the RSS feed of the site if there are any new articles. If it turns out that new articles have been published on the site, then launch a status bar notification and notify the user. And of course, the user is able to see the most recent articles and read them right from his device.
The application settings provides the ability to set up the desired interval of time, when the application should verify the RSS feed, plus the possibility to Turn On or Off this feature.
I have some doubts in regards to how many of my readers and visitors of this blog understand Romanian language, but just in case, here’s the Google Play download link:
Here are the topics that will help you achieve this:
Creating A Simple RSS Application in Android
Understanding AsyncTask – Once and Forever
How to verify an RSS Feed if New Articles have been published.
Working With Services – IntentService
Showing status bar notifications in Android
Writing and Reading from SharedPreferences
Building a Custom Fancy ListView in Android
After reading (and exercising) the above tutorials, you should be able to build your own Cool RSS Application
.
Please visit the Android Tutorials page for more Android tutorials.
GAG Pictures – Have Fun! Spread The Fun!
Hello everyone, I would like to introduce you my second Android application published on Google Play – GAG Pictures. Compared with the first one, this application is intended to bring you much fun.
GAG Pictures is your daily set of funny images! Every time the application is launched it downloads a set of new funny images from the famous site 9gag.com. Every image has a Share button so you can share that hilarious image with your friends. The current version allows you to share only the direct link to image, but in the upcoming releases the ability to send the image itself will be provided.
Have fun!










