`

Android notification的简单实践

 
阅读更多

通知处理,也就是大家都熟悉的通知,比如说某某的下载已经结束,会提示下载结束等等

这样的实现,其实很简单。

 

1.首先要有一个线程,可是说是下载的线程(大部分人都把这个变成服务来做)

2.在线程开始的时候打出警告就ok了

 

下面我们就简单的实装一个

 

public class MainActivity extends Activity implements View.OnClickListener{

	private static final int NOTE_ID = 100;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Button button = new Button(this);
		button.setText("Post New Notification");
		button.setOnClickListener(this);
		setContentView(button);
	}

	@Override
	public void onClick(View v) {
        handler.postDelayed(task, 10000);
        Toast.makeText(this, "Notification will post in 10 seconds", Toast.LENGTH_SHORT).show();
	}

	private Handler handler = new Handler();

	private Runnable task = new Runnable(){

		@Override
		public void run() {
			NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
			Intent launchIntent = new Intent(getApplicationContext(),MainActivity.class);
			PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, launchIntent, 0);
			Notification note = new Notification(R.drawable.ic_launcher,"Something Happened",System.currentTimeMillis());
			note.setLatestEventInfo(getApplicationContext(), "Finished", "Click Here", contentIntent);
			note.defaults |= Notification.DEFAULT_SOUND;
			note.flags |= Notification.FLAG_AUTO_CANCEL;
			
			manager.notify(NOTE_ID, note);
		}
	};
}

 上面的Activity是没有layout的,就是把button加入到界面。

代码 我不想解释什么,我想既然看到我博客的人,应该会明白到底去哪才能看到类的说明。

 

上面就是简简单单的时候了notification的功能。不过基本上用不了,因为在实际应用的时候,基本上都是拿服务的形式来做的。

 

下面我在做一个比较复杂的程序。

package com.java.chenhailong.notifyactivityman;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button startButton = (Button) findViewById(R.id.button1);
		Button stopButton = (Button) findViewById(R.id.button2);

		startButton.setOnClickListener(startListener);
		stopButton.setOnClickListener(stopListener);
	}

	private OnClickListener startListener = new OnClickListener() {
		public void onClick(View v) {
			startService(new Intent(MainActivity.this,
					NotificationChangeService.class));
		}
	};

	private OnClickListener stopListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			stopService(new Intent(MainActivity.this,
					NotificationChangeService.class));
		}
	};

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

  

package com.java.chenhailong.notifyactivityman;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.ConditionVariable;
import android.os.IBinder;

public class NotificationChangeService extends Service {

	private NotificationManager mNotificationManager;
	private ConditionVariable mCondition;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	public void onCreate() {
		mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

		// サービスはメインスレッドで実行されるため、処理を止めないように更新処理を別スレッドに。
		Thread thread = new Thread(null, mTask, "NotifyingService");
		mCondition = new ConditionVariable(false);
		thread.start();
	}

	private int WAIT_TIME = 5000;// 5秒単位
	private Runnable mTask = new Runnable() {
		public void run() {
			for (int i = 0; i < 4; ++i) {
				showNotification(R.drawable.mini_circle, "丸を表示しています");
				if (mCondition.block(WAIT_TIME))
					break;
				showNotification(R.drawable.mini_rect, "三角を表示しています");
				if (mCondition.block(WAIT_TIME))
					break;
				showNotification(R.drawable.ruler_triangle, "音符を表示しています");
				if (mCondition.block(WAIT_TIME))
					break;
			}
			// アニメーションの終了、サービスを終了する
			NotificationChangeService.this.stopSelf();
		}
	};

	// ユニークなIDを取得するために、R.layout.mainのリソースIDを使います
	private static int NOTIFICATION_ID = R.layout.activity_main;

	private void showNotification(int drawableId, CharSequence text) {

		// 通知内容を決定
		Notification notification = new Notification(drawableId, null,
				System.currentTimeMillis());

		// PendingIntentはタイミングを指定したインテント
		// 今回はユーザーがnotificationを選択した時にActivityを起動
		PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
				new Intent(this, MainActivity.class), 0);

		// notificationを設定
		notification.setLatestEventInfo(this, "NotificationService", text,
				contentIntent);

		mNotificationManager.notify(NOTIFICATION_ID, notification);
	}

	@Override
	public void onDestroy() {
		// サービスの停止時、通知内容を破棄する
		mNotificationManager.cancel(NOTIFICATION_ID);
		// スレッドを停止するため、ブロックを解除
		mCondition.open();
	}
}

 

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.java.chenhailong.notifyactivityman.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>
        <service android:name="NotificationChangeService"></service>

 

 其他的文件我就不拷了,大家只要知道思想,我想会做出更加漂亮的程序来,我这个也就是个例子。

 

程序我也提供给大家,大家也可以实践一下。来看看Android的奇妙之处

 

 

分享到:
评论

相关推荐

    android Notification 例子

    下面是一个简单的创建Notification的步骤: ```java // 创建Notification渠道(Android O及以上版本需要) if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O) { String channelId = "your_channel_id"; ...

    Android 通知(notification)简单实用Demo,包含点击功能

    这个"Android 通知(notification)简单实用Demo"提供了一个基础的实现,包括点击功能,非常适合初学者理解和实践。 一、通知的基本结构 一个Android通知通常由以下几个部分组成: 1. **通知图标**:显示在状态栏...

    Android 之 Notification 通知消息

    创建一个简单的Notification通常需要以下步骤: 1. 创建Notification.Builder实例,设置通知的基本信息,如标题(title)、内容(text)、图标(icon)等。 ```java Notification.Builder builder = new ...

    Android新手之简单实现Notification

    本篇文章将深入讲解如何在Android应用中简单实现Notification,并在用户点击通知时启动自定义的Activity。 首先,我们要了解Notification的基本结构。一个Notification通常包括图标、标题、内容文本以及可选的扩展...

    Android学习下 toast notification用法.rar

    在Android开发中,Toast和Notification是两种非常重要的用户交互组件,它们用于向用户显示短暂的信息提示。本资源“Android学习下 toast notification用法.rar”包含了有关如何在Android应用中使用这两种组件的源码...

    android Notification通知

    在"AndroidDemo_020"这个示例中,可能包含了创建和展示简单Notification的代码,你可以通过查看源码进一步了解具体实现。 除了基本的用法,Notification还有许多高级特性: - **大图通知**:使用`setLargeIcon...

    Android高级应用源码-实现Notification的通知栏常驻.rar

    在Android系统中,Notification是一种非常重要的机制,它允许应用程序在状态栏显示消息,即使用户不在应用界面也能接收到信息提示。本资源“Android高级应用源码-实现Notification的通知栏常驻.rar”提供了一套实现...

    安卓Android源码——实现Notification的通知栏常驻.rar

    在安卓开发中,Notification是应用与用户交互的重要方式,它能够在状态栏显示消息,即使用户不在应用程序中,也能提醒用户有新的活动或信息。...同时,要注意遵守Android的最佳实践,避免滥用常驻通知,以免打扰用户。

    android用户界面之Notification教程实例汇总

    #### 二、Notification简单实例 **1. 如何制作Notification程序** - **链接**: [http://www.apkbus.com/android-51689-1-1.html](http://www.apkbus.com/android-51689-1-1.html) - **内容概述**: 本教程提供了...

    android Notification联系

    通过"android Toast and Notification完整代码(练习用)"的压缩包文件`ToastAndNotification`,你可以学习到如何在实际项目中灵活运用这两种机制,包括不同类型的`Notification`构建和自定义`Toast`样式等实践案例...

    Android 学习(27)Notification 通知

    通过分析和学习这个项目的源码,你可以更好地理解和实践`Notification`的使用。 总之,`Notification`是Android应用与用户交互的关键工具,`NotificationManager`和`Notification.Builder`简化了创建和管理通知的...

    Android编程开发之NotiFication用法详解

    在Android编程中,Notification是应用与用户交互的重要方式,即使应用在后台运行或者完全关闭,也能提醒用户有新的事件需要处理。...理解并熟练运用Notification的各种特性和最佳实践,是每个Android开发者必备的技能。

    Notification

    在"疯狂Android中有关Notification的简单例子"这个主题中,我们将深入探讨`Notification`的基本概念、创建过程以及相关的使用技巧。 首先,我们要明白`Notification`的作用。在繁忙的手机屏幕上,`Notification`能...

    Android studio发送状态栏通知Notifycation demo

    在Android开发中,状态栏通知(Notification)是与用户交互的一种常见方式,它可以在不干扰用户当前活动的情况下向用户传达信息。本示例是关于如何使用Android Studio创建一个简单的状态栏通知的演示。通过理解并...

    android toast and notification完整代码

    在Android开发中,Toast和Notification是两种非常重要的用户反馈机制,它们用于向用户显示简短的信息或提醒。本文将深入探讨这两个概念,并提供完整的代码示例。 **1. Android Toast** Toast是Android系统中一种...

    013_android之消息提示 notification 介绍

    在Android开发中,Notification是应用与用户交互的重要方式之一,特别是在后台运行时,它能向用户提供...通过本讲座提供的"013_android之消息提示 notification 介绍",你将能够深入学习这一主题,并在实践中灵活运用。

    Android各种样式通知栏

    Android的通知栏具有多种样式,包括简单文本、带有图标、包含按钮等。通过`NotificationCompat.Builder`类,我们可以创建不同样式的通知。例如,设置标题(`setContentTitle`)、内容(`setContentText`)、小图标...

    安卓消息推送通知栏相关-状态栏Notification简单Demo.rar

    本资源"状态栏Notification简单Demo.rar"提供了一个关于如何在Android应用中实现通知栏消息推送的实例。由于无法逐一验证所有代码,这里将详细介绍`Notification`的基本使用方法和核心概念,帮助开发者理解和学习。 ...

    Notification小例子

    在Android开发中,Notification是一种非常重要的组件,它用于在用户界面之外向用户显示信息,即使应用在后台运行或用户没有直接与应用交互时也能提醒用户。"Notification小例子"是针对这一主题的一个示例项目,旨在...

Global site tag (gtag.js) - Google Analytics