package com.example.mycamera;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private static int REQ_CAMERA = 1;
private static int REQ_CAMERA2 = 2; //两个请求码
private Button btn_open,btn_open2;
private ImageView img;
private String mFilePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_open = (Button) findViewById(R.id.bt_open);
btn_open2 = (Button) findViewById(R.id.bt_open2);
btn_open.setOnClickListener(this);
btn_open2.setOnClickListener(this);
img = (ImageView) findViewById(R.id.img);
mFilePath = Environment.getExternalStorageDirectory().getPath() + "/" + "test.png";
}
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
switch (view.getId()){
case R.id.bt_open:
startActivityForResult(intent,REQ_CAMERA);
break;
case R.id.bt_open2:
Uri uri = Uri.fromFile(new File(mFilePath));
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent,REQ_CAMERA2);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
if (requestCode == REQ_CAMERA){
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
img.setImageBitmap(bitmap);
}else if (requestCode == REQ_CAMERA2){
FileInputStream fis = null;
try {
fis= new FileInputStream(mFilePath);
Bitmap bitmap = BitmapFactory.decodeStream(fis);
img.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
package com.example.myscandemo;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.xys.libzxing.zxing.activity.CaptureActivity;
import com.xys.libzxing.zxing.encoding.EncodingUtils;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private static int REQUEST_SCAN = 0;
private Button bt_Scan,bt_Create;
private TextView tv_Result;
private EditText edit_Input;
private ImageView img_QRcode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_Create = (Button) findViewById(R.id.bt_create);
bt_Scan = (Button) findViewById(R.id.bt_scan);
bt_Create.setOnClickListener(this);
bt_Scan.setOnClickListener(this);
tv_Result = (TextView) findViewById(R.id.tv_result);
edit_Input = (EditText) findViewById(R.id.edit_input);
img_QRcode = (ImageView) findViewById(R.id.img_qrcode);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.bt_scan:
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent,REQUEST_SCAN);
break;
case R.id.bt_create:
String input = edit_Input.getText().toString();
Bitmap bitmap = EncodingUtils.createQRCode(input,500,500,null);
img_QRcode.setImageBitmap(bitmap);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
//如果点击的扫描二维码,启动CaptureActivity ,处理后返回所需要的数据
Bundle bundle = data.getExtras();
String result = bundle.getString("result");
tv_Result.setText(result);
}
}
}
首先用到照相机,以及需要访问系统文件所以添加用户权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在使用缩略图的时候没有保存,直接用bitmap解析从Intent相机带回来的数据。
在用原图的时候,是将图片保存到本地,在用户界面中显示的是本地文件
得到图片存储的的路径
String mFilePath = Environment.getExternalStorageDirectory().getPath() + "/" + "test.png";
在按钮的响应事件中更改view需要显示的东西
Uri uri = Uri.fromFile(new File(mFilePath));
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent,REQ_CAMERA2);
最后解析该路径中的图片文件为bitmap格式,直接给imageview赋值FileInputStream fis= new FileInputStream(mFilePath);
Bitmap bitmap = BitmapFactory.decodeStream(fis);
img.setImageBitmap(bitmap);
(来源于慕课)
喵了个咪^ ^