爱玺玺

爱玺玺的生活日记本。wx:lb87626

android4.4更新图库不能发广播解决

package com.example.paintborad;


import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;


import android.support.v7.app.ActionBarActivity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.Bitmap.CompressFormat;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.net.Uri;

import android.os.Build;

import android.os.Bundle;

import android.os.Environment;

import android.os.SystemClock;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.ImageView;


public class MainActivity extends ActionBarActivity {

private ImageView iv;

private Bitmap bitmap2;

private Canvas canvas;

private Paint paint;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv = (ImageView) findViewById(R.id.iv);

// 获取原图背景

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),

R.drawable.bg);

bitmap2 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),

bitmap.getConfig());

paint = new Paint();

canvas = new Canvas(bitmap2);

// 开始作画,canvas上面才可以画

canvas.drawBitmap(bitmap, new Matrix(), paint);// 在canvas画了个bitmap(背景图片)

canvas.drawLine(10, 20, 60, 100, paint);// 在canvas画了个线

iv.setImageBitmap(bitmap2);

// 给控件iv一个触摸事件

iv.setOnTouchListener(new OnTouchListener() {

int startX = 0;

int startY = 0;


@Override

public boolean onTouch(View v, MotionEvent event) {

// 获取事件类型

int action = event.getAction();

switch (action) {

case MotionEvent.ACTION_DOWN:

System.out.println("按下");

// 获取按下位置

startX = (int) event.getX();

startY = (int) event.getY();

break;


case MotionEvent.ACTION_MOVE:

System.out.println("移动");

// 获取移动点位置

int stopX = (int) event.getX();

int stopY = (int) event.getY();

canvas.drawLine(startX, startY, stopX, stopY, paint);

iv.setImageBitmap(bitmap2);

// 更新开始位置

startX = stopX;

startY = stopY;

break;

case MotionEvent.ACTION_UP:

System.out.println("抬起");

break;

}

// Returns:

// True if the listener has consumed the event, false otherwise.

return true;// 这里必须是true

}

});

}

    //画笔变粗

public void click1(View v) {

        paint.setStrokeWidth(10);

}

    //红色

public void click2(View v) {

        paint.setColor(Color.RED);

}

    //保存

public void click3(View v) {  

System.out.println("保存图片");

try {

//创建一个图片文件

String path = Environment.getExternalStorageDirectory().getPath()+File.separator+"aixi";

if(!new File(path).exists()){

new File(path).mkdir();

}

File file=new File(path, SystemClock.uptimeMillis()+".png");

System.out.println("存放地址:"+path);

//创建一个流通往图片文件

FileOutputStream fos=new FileOutputStream(file);

//使用流把图片数据传输到图片文件

//compress有打包的意思

bitmap2.compress(CompressFormat.PNG, 100, fos);

/*

//发布个虚假广播欺骗手机相册,让手机相册重新加载sd卡图片

//发送一个虚假的重载sd广播

Intent intent=new Intent(Intent.ACTION_MEDIA_MOUNTED);

intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));

//发送一条广播

sendBroadcast(intent);

*/

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

                Intent mediaScanIntent = new Intent(

                        Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

                Uri contentUri = Uri.fromFile(file);

                mediaScanIntent.setData(contentUri);

                this.sendBroadcast(mediaScanIntent);

            } else {

                Intent intent=new Intent(Intent.ACTION_MEDIA_MOUNTED);

    intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));

    //发送一条广播

    sendBroadcast(intent);

            }


} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}


发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5