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(); 函数。

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题