Camer的用法:相册+相机

来源:互联网 发布:淘宝店铺小号 编辑:程序博客网 时间:2024/06/05 14:17

package com.example.camera;


import java.io.File;


import android.support.v7.app.ActionBarActivity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.CalendarContract.EventsEntity;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.VideoView;


public class MainActivity extends ActionBarActivity {


private ImageView iv;
private ImageView iv2;
private ImageView ivs;
private VideoView vView;
private Button iResultText;
private MediaController mediaco;
private String recordedVideoFilePath;
private FrameLayout c_content;
private LinearLayout clayout;
private Button c_api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.imageView1);
iv2 = (ImageView) findViewById(R.id.imageView2);
vView = (VideoView) findViewById(R.id.vV);
iResultText=(Button)findViewById(R.id.bofang);
clayout=(LinearLayout)findViewById(R.id.camera_layout);
c_content=(FrameLayout)findViewById(R.id.camera_content);
c_api=(Button)findViewById(R.id.cameraapi);
c_api.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
clayout.setVisibility(View.GONE);
Fragment capi=new CameraApi();
getFragmentManager().beginTransaction().replace(R.id.camera_content,capi ).addToBackStack(null).commit();

}
});
}
public void shexiang(View v){
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);


intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);//参数设置可以省略


startActivityForResult(intent, 4);
}
public void bofang(View v){
mediaco=new MediaController(this); 
if(recordedVideoFilePath==null)
{
return;
}
File file=new File(recordedVideoFilePath);  

if(file.exists()){  
//VideoView与MediaController进行关联  
vView.setVideoPath(file.getAbsolutePath());  
   vView.setMediaController(mediaco);  
   mediaco.setMediaPlayer(vView);  
   //让VideiView获取焦点  
   vView.requestFocus();  
}
vView.start();
}
public void camera(View v) {
new AlertDialog.Builder(this)
.setPositiveButton("相册", new DialogInterface.OnClickListener() {


@Override
public void onClick(DialogInterface dialog, int which) {

Intent pt=new Intent(Intent.ACTION_PICK,null);
pt.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
"image/*");
startActivityForResult(pt, 111);

dialog.dismiss();


}
})
.setNegativeButton("相机", new DialogInterface.OnClickListener() {


@Override
public void onClick(DialogInterface dialog, int which) {


Intent pz=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
pz.putExtra(MediaStore.EXTRA_OUTPUT, 
Uri.fromFile(new File(
Environment.getExternalStorageDirectory(), "xiaobin.jpg")));
startActivityForResult(pz, 2);

dialog.dismiss();
}
}).create().show();
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 111:
startphont(data.getData());


break;
case 2:
File temp = new File(Environment.getExternalStorageDirectory(),
"xbin.jpg");
startphont(Uri.fromFile(temp));
break;
case 3:

if (data != null) {
setPicToView(data);
}


break;
case 4:
sheshow(data.getData());
break;

}
super.onActivityResult(requestCode, resultCode, data);
}


private void sheshow(Uri videoUri) {


//String[] projection = { MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE };


Cursor cursor = managedQuery(videoUri, null, null, null, null);


cursor.moveToFirst();//这个必须加,否则下面读取会报错


int num = cursor.getCount();


recordedVideoFilePath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));


int recordedVideoFileSize = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media.SIZE));


Log.i("videoFilePath", recordedVideoFilePath);


Log.i("videoSize", ""+recordedVideoFileSize);

}
private void startphont(Uri fromFile) {

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(fromFile, "image/*");
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 150);
intent.putExtra("outputY", 150);
intent.putExtra("return-data", true);
iv2.setImageURI(fromFile);//资源图片
startActivityForResult(intent, 3);


}
/**
* 保存裁剪之后的图片数据

* @param picdata
*/
private void setPicToView(Intent picdata) {

Bundle extras = picdata.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
Drawable drawable = new BitmapDrawable(photo);
iv.setBackgroundDrawable(drawable);//背景图片

}


}
}


0 0
原创粉丝点击