package com.example.aa;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.RemoteViews;
/**
* Object obj = context.getSystemService(Context.静态常量);返回一个系统服务对象 public void
* test() { Context context = this;
*
* NotificationManager notificationManager = (NotificationManager)
* context.getSystemService(Context.NOTIFICATION_SERVICE);
*
* LayoutInflater layoutInflater = (LayoutInflater)
* context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
*
* WindowManager windowManager = (WindowManager)
* context.getSystemService(Context.WINDOW_SERVICE); Display d1 =
* windowManager.getDefaultDisplay(); // 获取屏幕宽、高用
* System.out.println("------------d1---------:"+ d1.getHeight());//高用
* System.out.println("------------d1---------:"+ d1.getWidth());//幕宽
*
* LocationManager locationManager = (LocationManager)
* context.getSystemService(Context.LOCATION_SERVICE); }
*/
public class MainActivity extends Activity {
Builder builder = null;
NotificationManager manager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private int id1 = 0; // 通知的id
private int num = 1; // 通知的编号
public Builder initBuilder(Builder builder) {
return builder;
}
/****************************普通通知--标准通知************************************************/
// 普通通知--标准通知
public void notification(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSmallIcon(R.drawable.ic_launcher);// 设置小图片,可选,在右下角
builder.setContentTitle("5 new message");// 设置标题
builder.setContentText("[email protected] ");// 设置内容
builder.setTicker("New message");// 第一次提示消息的时候显示在通知栏上
builder.setNumber(num++);// 设置通知编号
Bitmap btm = BitmapFactory.decodeResource(this.getResources(),
R.drawable.test);
builder.setLargeIcon(btm);// 设置大图片 在左边
builder.setAutoCancel(true);// 自己维护通知的消失
// 构建一个Intent
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra("name", "王光荣");
/**
* 封装一个Intent 用于标识PendingIntent的构造选择:
* FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。
* FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。
* FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。
* FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用。
*/
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 设置通知主题的意图 可选
builder.setContentIntent(resultPendingIntent);
Notification notification = builder.build();// 创建通知
// 获取通知管理器对象,用于帮助通知的显示,取消等等
NotificationManager notificationManager = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
/**
* 参数1:使用任意整数,表示通知的id, 如果两个通知的id相同,第二个通知会替换第一个通知 参数2: 要被显示的通知对象
*/
notificationManager.notify(id1++, notification);// 显示通知
// notificationManager.cancel(id1);//根据通知id取消通知
}
/*******************************大视图通知******************************************************/
// 大视图通知
public void bignotification(View v) {
Bitmap btm = BitmapFactory.decodeResource(getResources(),
R.drawable.test);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
PendingIntent pendingIntent = PendingIntent
.getActivity(MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
// 创建builder
NotificationCompat.Builder builder = new NotificationCompat.Builder(
MainActivity.this);
// 使用builder设置属性
builder.setSmallIcon(R.drawable.test1);// 设置小图标
builder.setLargeIcon(btm);// 设置大图标
builder.setNumber(13);// 设置编号
builder.setContentIntent(pendingIntent);// 设置意图
// builder.setContentTitle("标题");//设置不生效
// builder.setContentText("内容");//设置不生效
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.setBigContentTitle("华清远见");// 大标题,在最上面
inboxStyle.addLine("中华人民共和国1");
inboxStyle.addLine("中华人民共和国2");
inboxStyle.addLine("中华人民共和国3");
inboxStyle.addLine("中华人民共和国4");
inboxStyle.addLine("中华人民共和国5");
inboxStyle.addLine("中华人民共和国6");
inboxStyle.setSummaryText("www.hqyj.com");// 落脚,在最下面
// 设置大视图
builder.setStyle(inboxStyle);
// 创建通知
Notification notification = builder.build();
// 显示通知
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notification);
}
/*********************************进度条通知, 子线程可以操作时度条*****************************************************/
// 进度条通知, 子线程可以操作时度条
public void progressnotification(View v) {
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 第一步,创建Builder对象
builder = new NotificationCompat.Builder(this);
// 第二步,设置属性
builder.setSmallIcon(R.drawable.ic_launcher);// 设置小图标,如果不设置大图标,小图标当作大图标使用,而小图标不见了
builder.setContentTitle("下载图片");// 设置标题
builder.setContentText("正在下载");// 设置内容
builder.setAutoCancel(true); // 设置用户自己维护通知的取消, 默认值为true
new Thread() {
public void run() {
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (i == 100) {
builder.setContentText("下载完毕");
}
builder.setProgress(100, i, false);// 设置进度条,并且总进度为100,当前进度为30, false表示能看到进度
// 第三步,创建通知
Notification notification = builder.build();
// 第四步,显示通知
manager.notify(0, notification);
}
}
}.start();
}
/*****************************流动进度条通知***************************************************/
// 流动进度条通知
public void cycleprogressnotification(View v) {
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 1,创建builder
builder = new NotificationCompat.Builder(this);
// 2,使用builder设置属性
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("Picture Download");
builder.setContentText("Download in progress");
builder.setProgress(0, 0, true);// 设置为true表示流动,看不见时度,所以 0,0不起作用
manager.notify(0, builder.build());
// 5秒之后还停止流动
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
builder.setProgress(100, 100, false);// 设置为false,表示刻度
builder.setContentText("下载完毕");
manager.notify(0, builder.build());
}
}).start();
}
/****************************自定义通知********************************************************/
// 自定义通知
public void mySelfnotification(View v) {
/**创建自定界面
* 参数1:是activity的包名, 可以使用activity.getPackageName()得到com.example.aa
* 参数2:布局文件
*/
RemoteViews contentViews = new RemoteViews("com.example.aa", R.layout.custom_notifition);
// 通过控件的Id设置属性
contentViews.setImageViewResource(R.id.imageView, R.drawable.test);
contentViews.setTextViewText(R.id.button, "钱");
contentViews.setTextViewText(R.id.textView, "又得了5分钱");
// 封装了一个发送广播的意图
Intent intentx = new Intent("broadcast.btn");//字符串表示广播类
PendingIntent intentpi = PendingIntent.getBroadcast(this, 1, intentx,PendingIntent.FLAG_UPDATE_CURRENT);
contentViews.setOnClickPendingIntent(R.id.button, intentpi);// 点击按钮触发意图,意图可以是广播意图,也可以是跳转Activity的意图
Intent intent = new Intent(this, ResultActivity.class);
PendingIntent pendingIntent = PendingIntent
.getActivity(MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
//1,创建Builder对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
//2,设置属性
builder.setSmallIcon(R.drawable.ic_launcher);//设置小图标,只出现在新通知来后的提示
builder.setContentTitle("My notification");// 设置了无效,不设报错
builder.setTicker("new message");//新通知来后的显示信息
builder.setAutoCancel(true);
builder.setContentIntent(pendingIntent);//设置意图,意图可以是广播意图,也可以是跳转Activity的意图
builder.setContent(contentViews);// 设置自定义界面
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(10, builder.build());
}
}
package com.example.aa;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.Button;
public class ResultActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");//王光荣
Button btn = new Button(this);
btn.setText(name);
setContentView(btn);
}
}