Notification
NotificationCompat
ステータスバーに通知を表示させる。
ステータスバーへの通知なのでアプリ起動中に単独で使うことはあまりない。
アプリを起動してない時に通知させる為、AlarmManagerと併用されることが多い。
図1 Notification通知画面 |
NotificationCompat.Builderの使用を推奨※
※support.v4が必要(Android1.6から使用可にするサポート)
MainActivity.java
AlarmReceiver.java
res/AndroidManifest.xml
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent _sender = PendingIntent.getBroadcast(this, 0, intent, 0); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 9);//9時にセット calendar.set(Calendar.MINUTE, 0);//0分 calendar.set(Calendar.SECOND, 0);//0秒 calendar.set(Calendar.MILLISECOND, 0);//カンマ0秒 if(calendar.getTimeInMillis() < System.currentTimeMillis()){ calendar.add(Calendar.DAY_OF_YEAR, 1);}//もし時間が過去の場合は1年先でセット AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), _sender); } }
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent _intent = new Intent(context,MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, _intent,PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentIntent(contentIntent); builder.setTicker("ステータスバーに表示されるテキスト");//通知に表示される文章 builder.setSmallIcon(R.drawable.ic_launcher);//通知アイコン builder.setContentTitle("表示されるタイトル");//表示されるタイトル builder.setContentText("サブタイトル");//タイトルの下に表示されるサブタイトル builder.setDefaults(Notification.DEFAULT_SOUND);//通知音 builder.setDefaults(Notification.DEFAULT_VIBRATE);//通知時バイブレーション builder.setDefaults(Notification.DEFAULT_LIGHT);//通知時ライト builder.setDefaults(Notification.DEFAULT_ALL);//通知音、バイブレーション、ライト //通知するタイミング builder.setWhen(System.currentTimeMillis()); //タップするとキャンセルされるか builder.setAutoCancel(true); // NotificationManagerをセット NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); //通知 manager.notify(1, builder.build()); } }
res/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="sample.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="sample.helloworld.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> //↓この行を追加↓ <receiver android:name=".AlarmReceiver" android:process=":remote" /> </application> </manifest>
0 件のコメント:
コメントを投稿