学习别人的摇一摇

package sss;

import java.io.File;
import java.io.FileOutputStream;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Vibrator;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;

import com.example.sss.R;

public class MainActivity extends Activity implements SensorEventListener {
 private ImageView image;
 private SensorManager sManager;
 private Vibrator vibrator;
 private boolean isWriting = false;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);
  sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
  sManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
  vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  image = (ImageView) findViewById(R.id.image1);
 }

 @Override
 protected void onPause() {
  // TODO Auto-generated method stub
  sManager.unregisterListener(this);
  super.onPause();
 }

 @Override
 protected void onResume() {
  // TODO Auto-generated method stub
  sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
  super.onResume();
 }

 @Override
 public void onAccuracyChanged(Sensor sensor, int accuracy) {
  // TODO Auto-generated method stub

 }

 @Override
 public void onSensorChanged(SensorEvent event) {
  // TODO Auto-generated method stub
  float[] values = event.values;
  int sensorType = event.sensor.getType();
  if (sensorType == Sensor.TYPE_ACCELEROMETER) {
   if (Math.abs(values[0]) > 14 || Math.abs(values[1]) > 14 || Math.abs(values[2]) > 14) {
    saveImage();
   }

  }
 }

 /**
  * 获取和保存当前屏幕的截图
  */
 private void saveImage() {
  if (isWriting) {
   return;
  }
  isWriting = true;
  vibrator.vibrate(500);
  // 构建Bitmap
  WindowManager windowManager = getWindowManager();
  Display display = windowManager.getDefaultDisplay();
  int w = display.getWidth();
  int h = display.getHeight();
  Bitmap Bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
  // 获取屏幕
  View decorview = this.getWindow().getDecorView();
  decorview.setDrawingCacheEnabled(true);
  Bmp = decorview.getDrawingCache();
  image.setImageBitmap(Bmp);
  // 图片存储路径
  String SavePath = getSDCardPath() + "/sss";
  // 保存Bitmap
  try {
   File path = new File(SavePath);
   if (!path.exists()) {
    path.mkdirs();
   }
   File file = new File(SavePath,System.currentTimeMillis()+".png");
  
   if (!file.exists()) {
    file.createNewFile();
   }
   FileOutputStream fos = null;
   fos = new FileOutputStream(file);
   if (null != fos) {
    Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
    fos.flush();
    fos.close();
   }
   isWriting = false;
   
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /**
  * 获取SDCard的目录路径功能
  *
  * @return
  */
 private String getSDCardPath() {
  File sdcardDir = null;
  // 判断SDCard是否存在
  boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  if (sdcardExist) {
   sdcardDir = Environment.getExternalStorageDirectory();
  }
  return sdcardDir.toString();
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值