2013/04/25

来源:互联网 发布:jquery post 数组 php 编辑:程序博客网 时间:2024/05/13 19:31

package barry.android.c;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Timer;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.provider.MediaStore;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MyCaremaActivity extends Activity {
  //private static Handler handler = new Handler(Looper.getMainLooper());    
  //private static Toast toast = null;        
  //private static Object synObj = new Object();   
 private Button camera_video = (Button) findViewById(R.id.show_button);
 private MyToast myToast = new MyToast(this); 
 private Button camera_image = (Button) findViewById(R.id.button);  
 private Button camera_exit = (Button) findViewById(R.id.exit);
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
        //TextView tv=(TextView)findViewById(R.layout.tv1);
  camera_image.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, 1);
   }
  });
  camera_video.setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    startActivityForResult(intent, 1);
    if(v == camera_video){
       myToast.show();   
    }
    if(v == camera_exit){
       myToast.cancel();
    }
   } 
  }); 
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
     //  先创建一个Toast对象
  if (resultCode == Activity.RESULT_OK) {
 
   String sdStatus = Environment.getExternalStorageState();
   if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
    Log.v("TestFile",
      "SD card is not avaiable/writeable right now.");
    return;
   }
   
            //Toast.makeText(this, name, Toast.LENGTH_LONG).show();
           
             //  设置Toast信息提示框显示的位置(在屏幕顶部水平居中显示)
      
      /*try{
          //  从Toast对象中获得mTN变量
                  Field field = toast.getClass().getDeclaredField("mTN");
                  field.setAccessible(true);
                  Object obj = field.get(toast);
          //  TN对象中获得了show方法
                  Method method =  obj.getClass().getDeclaredMethod("show", null);
          //  调用show方法来显示Toast信息提示
                  method.invoke(obj, null);
      }catch (Exception e){}
      try{
       Field field = toast.getClass().getDeclaredField("mTN");
       Object obj = field.get(toast);
          //  需要将前面代码中的obj变量变成类变量。这样在多个地方就都可以访问了
          Method method =  obj.getClass().getDeclaredMethod("hide", null);
          method.invoke(obj, null);
      }catch (Exception e){}*/
      
      /*Toast toast; 
      Timer timer1=new Timer();   //必须实例化,不然空指针异常  
       
      //<初始化不能删!删了空指针异常~>  
      toast = Toast.makeText(this, "", Toast.LENGTH_LONG); 
      toast.setGravity(Gravity.TOP, 0, 0); 
       
      final Handler handler=new Handler(Looper.getMainLooper());           
               handler.post(new Runnable() {                       
              @Override 
              public void run() { 
                  toast=Toast.makeText(XXX.this, info, Toast.LENGTH_LONG);                     
                  toast.setGravity(Gravity.TOP, 0, 50); 
                  timer1 = new Timer(); 
                  timer1.schedule(new RemindTask(toast), 0,3000);                                 }                    
          });   */

      //new MyCaremaActivity().popupImpl();        
   String name = new DateFormat().format("yyyy-MM-dd kk:mm:ss",Calendar.getInstance(Locale.CHINA)) + " ";
   Toast.makeText(this, name, Toast.LENGTH_LONG).show(); 
   
   Bundle bundle = data.getExtras();
   Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
   FileOutputStream b = null;
   File file = new File("/sdcard0/myImage/");
   file.mkdirs();// 创建文件夹
   String fileName = "/sdcard0/myImage/111.jpg";
   try {
    b = new FileOutputStream(fileName);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
    
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } finally {
    try {
     b.flush();
     b.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   ((ImageView) findViewById(R.id.imageView)).setImageBitmap(bitmap);// 将图片显示在ImageView里
  }
 }
  /*
   * 打开TOAST对话框
   */
  private void popupImpl(){
   String name = new DateFormat().format("yyyy-MM-dd kk:mm:ss",Calendar.getInstance(Locale.CHINA)) + " ";
   Toast toast = Toast.makeText(this, name, Toast.LENGTH_LONG);
         //Toast toast = Toast.makeText(this, "Never Close Toast", Toast.LENGTH_LONG);
         toast.setGravity(Gravity.TOP|Gravity.CENTER_VERTICAL, 0, 0);
   //toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
         try {
                 Field field = toast.getClass().getDeclaredField("mTN");
                 Object obj = field.get(toast);
                 //设置可以访问私有静态变量
                 field.setAccessible(true);
                 obj = field.get(toast);
                 //利用变量obj取到show()方法
                 Method method = obj.getClass().getDeclaredMethod("show", null);
                 //阻止其调用show方法
                 method.invoke(obj,null);
         } catch (Exception e) {
                 e.printStackTrace();
         }
 }
 
 /*
  * 关闭TOAST对话框
  */
    private void closeImpl(Toast toast,Object obj){
          if(obj != null){
                  Method method;
                  try {
                          method = obj.getClass().getDeclaredMethod("hide", null);
                          method.invoke(obj, null);
                  } catch (Exception e) {
                          e.printStackTrace();
                  }
          }
 }
    /*
     * 永远不关闭toast
     * */
    private void never_close(){
     
  Timer timer1=new Timer();   //必须实例化,不然空指针异常  
  String name = new DateFormat().format("yyyy-MM-dd kk:mm:ss",Calendar.getInstance(Locale.CHINA)) + " ";
  Toast toast = Toast.makeText(this, name, Toast.LENGTH_LONG);  
  //<初始化不能删!删了空指针异常~>  
  //toast = Toast.makeText(this, "", Toast.LENGTH_LONG); 
  //toast.setGravity(Gravity.TOP, 0, 0); 
   
  /*final Handler handler=new Handler(Looper.getMainLooper());           
           handler.post(new Runnable() {                       
          @Override 
          public void run() { 
              toast=Toast.makeText(this, name, Toast.LENGTH_LONG);                     
              toast.setGravity(Gravity.TOP, 0, 50); 
              timer1 = new Timer(); 
              timer1.schedule(new RemindTask(toast), 0,3000);                                 }                    
      });*/ 
     
    }
 private Bitmap generatorContactCountIcon(Bitmap icon) {
        // 初始化画布
        int iconSize = (int) getResources().getDimension(
                        android.R.dimen.app_icon_size);
        Bitmap contactIcon = Bitmap.createBitmap(800, 600, Config.ARGB_8888);
        Canvas canvas = new Canvas(contactIcon);
        // 拷贝图片
        Paint iconPaint = new Paint();
        iconPaint.setDither(true);// 防抖动
        iconPaint.setFilterBitmap(true);// 用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
        Rect src = new Rect(0, 0, icon.getWidth() - 5, icon.getHeight() - 5);
        Rect dst = new Rect(0, 0, 800, 600);
        canvas.drawBitmap(icon, src, dst, iconPaint);

        // 在图片上创建经纬度
        // String contacyCount="经纬度:"+latLongString;
        String contacyCount = "经纬度:";

        // 启用抗锯齿和使用设备的文本字距
        Paint countPaint = new Paint(Paint.ANTI_ALIAS_FLAG
                        | Paint.DEV_KERN_TEXT_FLAG);
        countPaint.setColor(Color.RED);
        countPaint.setTextSize(10f);
        countPaint.setTypeface(Typeface.DEFAULT_BOLD);
        canvas.drawText(contacyCount, 10, 10, countPaint);
        return contactIcon;
    }
}

class MyToast {
    private Context mContext = null;
    private Toast mToast = null;
    private Handler mHandler = null;
    private Runnable mToastThread  = new Runnable() {
      @Override
      public void run() {
        mToast.show();
        mHandler.postDelayed(mToastThread,1000);//每隔1秒显示一次
      }
   };
   public MyToast(Context context){
     mContext = context;
     mHandler = new Handler(mContext.getMainLooper()); 
     String time=new DateFormat().format("yyyy 年  MM 月  dd 日",Calendar.getInstance(Locale.CHINA)) + "";
     mToast = Toast.makeText(mContext, time, Toast.LENGTH_LONG);
     mToast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
   }
   public void setText(String text){
     mToast.setText(text);
   }
   public void show(){
     mHandler.post(mToastThread);
   }
   public void cancel() {
     mHandler.removeCallbacks(mToastThread);//先把显示线程删除
     //mToast.cancel();// 把最后一个线程的显示效果cancel掉,就一了百了了
   }
}

原创粉丝点击