u010341948 2013-05-10 05:00 采纳率: 0%
浏览 2140

android这段代码为什么无限启动相机?应该怎么改?

package nzy.ssp;

import java.io.File;

import nzy.ssp.net.AuthSina.common.InfoHelper;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

//定义一个类,使其实现拍照并保存功能
public class ActivityTakePic extends Activity {
    // 定义类的成员变量

    private int TAKE_PICTURE = 1;
    private String TAG = "ActivityTakePic";
    public static String thisLarge = null;
    private String theSmall = null;
    public static Uri photoUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置全屏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        //setContentView(R.layout.main);
        Toast.makeText(this, "启动拍照功能……", Toast.LENGTH_SHORT).show();
        // 手机拍照
        opentakePicDialog();
    }

    private boolean checkSdCard() {
        if (android.os.Environment.getExternalStorageDirectory().equals(
                android.os.Environment.MEDIA_MOUNTED)) {
            return true;
        } else {
            return false;
        }
    }

    // 拍照
    private void opentakePicDialog() {
        if (!checkSdCard()) {
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            startActivityForResult(intent, TAKE_PICTURE);

        } else {
            Toast.makeText(ActivityTakePic.this, "你手机上不存在存储卡",
                    Toast.LENGTH_LONG).show();
        }

    }

    /*
     * 相机拍照回调函数
     * 
     * @see android.app.Activity#onActivityResult(int, int,
     * android.content.Intent)
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == TAKE_PICTURE) {
            if (resultCode == RESULT_OK) {
                // super.onActivityResult(requestCode, resultCode, data);
                Log.i(TAG, TAG);
                Intent intent = new Intent();

                String camerName = InfoHelper.getFileName();
                Log.i(TAG, "camerName =       " + camerName);
                String fileName = "Share" + camerName + ".jpg";

                File camerFile = new File(InfoHelper.getCamerPath(), fileName);

                theSmall = InfoHelper.getCamerPath() + fileName;
                thisLarge = getLatestImage();
                Log.i(TAG, "theSmall =       " + theSmall);
                Log.i(TAG, "thisLarge =       " + thisLarge);
                photoUri = Uri.fromFile(camerFile);
                data.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
                        photoUri);
                intent.putExtras(data);
                intent.putExtra("int", 0);
                intent.setClass(ActivityTakePic.this, ActivityMain.class);
                startActivity(intent);
            }
        }
    }

    /**
     * 获取SD卡中最新图片路径
     * 
     * @return
     */
    @SuppressWarnings("unused")
    protected String getLatestImage() {
        String latestImage = null;
        String[] items = { MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, items, null,
                null, MediaStore.Images.Media._ID + " desc");

        if (cursor != null && cursor.getCount() > 0) {
            cursor.moveToFirst();
            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
                latestImage = cursor.getString(1);
                break;
            }
        }

        return latestImage;
    }

}
  • 写回答

1条回答 默认 最新

  • Baby_Bonnie 2013-05-10 07:55
    关注

    在按钮单击事件或其它输入事件使用 opentakePicDialog(); 函数。

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况