使用通知
发送通知需要NotificationManager
和 Notification
,
但是书上写的构建Notification
方法,Android3.0以上已经废弃,因此采用新的安全的方法:
findViewById(R.id.btnNotificate).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置点击通知后的去处
Intent intent = new Intent("com.jackie.meidatest.intent.notificationApp");
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//创建通知对象并设置参数
NotificationCompat.Builder ncb = new NotificationCompat.Builder(MainActivity.this);
ncb.setContentTitle("来自app");//设置通知标题
ncb.setContentText("这是app的通知");//设置通知内容
ncb.setContentIntent(pendingIntent);//设置通知跳转的pendingIntent
ncb.setTicker("您有一条新的app通知");//设置顶端通知小标题
ncb.setAutoCancel(true);
ncb.setSmallIcon(R.drawable.app_world);//设置通知图标
ncb.setDefaults(Notification.DEFAULT_ALL);//全部设置为默认
//得到NotificationManager对象
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//发出id为1的通知
notificationManager.notify(1, ncb.build());
}
});
其中PendingIntent是用于点击通知后跳转的。
调用摄像头拍照和裁剪功能
package com.jackie.cameratest;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO = 2;
private Button btnTP;
private ImageView ivPhoto;
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnTP = (Button) findViewById(R.id.btnTP);
ivPhoto = (ImageView) findViewById(R.id.ivPhoto);
btnTP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建图片的暂时存储文件
File photo = new File(Environment.getExternalStorageDirectory(), "tempImage.jpg");
if (photo.exists()) {
//如果已经有图片文件则删除
photo.delete();
}
try {
//记得要有这句文件才算创建成功
photo.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//调用系统摄像头拍照
imageUri = Uri.fromFile(photo);//将File对象转换为Uri
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");//调用系统拍照功能
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//指定拍摄后图片的输出地址
startActivityForResult(intent, TAKE_PHOTO);//requestCode为TAKE_PHOTO
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
Intent intent = new Intent("com.android.camera.action.CROP");//调用裁剪图片功能
intent.setDataAndType(imageUri, "image/*");//指定裁剪所需的图片来源
intent.putExtra("scale", true);//裁剪的时候保留原比例
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//指定裁剪后图片的输出地址
startActivityForResult(intent, CROP_PHOTO);
}
break;
case CROP_PHOTO:
if (resultCode == RESULT_OK) {
try {
//将jpg图片解析成Bitmap
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
//给ImageView设置Bitmap
ivPhoto.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
}