【问题标题】:What is missing in order to make my android camera flash turn on?为了让我的安卓相机闪光灯打开,缺少什么?
【发布时间】:2013-03-23 13:32:51
【问题描述】:

我正在尝试创建一个基本的查找我的电话应用程序,但遇到了一些问题。到目前为止,我可以向我的手机发送一个密码字并让它播放一首歌曲。接下来,我希望能够输入一个不同的关键词,并让它以稳定的光线或脉动的方式打开相机闪光灯。到目前为止,我已经看到了大量的示例代码,但我不知道为什么它对我不起作用。

我已在清单中包含访问相机和相机闪光灯的权限。 我已经尝试了此链接中的两个示例Setting Parameters.FLASH_MODE_TORCH doesn't work on Droid X 2.3

但是,我看到的其他几个打开相机闪光灯的选项需要整个类而不是一个小函数。

这是我目前的代码:

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Camera;
import android.hardware.*;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver {

    public static final String SMS_EXTRA_NAME = "pdus";
    public static final String SMS_URI = "content://sms";

    public void onReceive(Context context, Intent intent) {
        // Get SMS map from Intent
        Bundle extras = intent.getExtras();

        String messages = "";

        if (extras != null) {
            // Get received SMS array
            Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);

            // Get ContentResolver object for pushing encrypted SMS to incoming
            // folder
            ContentResolver contentResolver = context.getContentResolver();

            for (int i = 0; i < smsExtra.length; ++i) {
                SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);

                String body = sms.getMessageBody().toString();
                String address = sms.getOriginatingAddress();

                messages += "SMS from " + address + " :\n";
                messages += body + "\n";

            }

            // Display SMS message
            Toast.makeText(context, "WE GOT A MESSAGE", Toast.LENGTH_SHORT)
                    .show();

            // plays eye of the tiger for 45 seconds
            if (messages.contains("Hey Sarah")) {
                final MediaPlayer mp = MediaPlayer.create(context,
                        R.raw.sound_file_1);
                mp.start();

                // play ring tone for 45 seconds
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        mp.stop();
                    }
                }, 45000);
            }

            //turn the flash on 
            if (messages.contains("Hey Geoff")) {

                Camera mCamera = Camera.open();
                mCamera.startPreview();
                Camera.Parameters params = mCamera.getParameters();
                if (params.getFlashMode() != null) {
                        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                }
                mCamera.setParameters(params);
            }
        }
    }
}

camera.open() 似乎存在问题(错误:方法 open() 未定义为 Camera 类型) 使用 startPrevies() (错误:将演员表添加到 mCamera) 使用 Camera.Parameters(错误:Camera.Parameters 无法解析为类型) 等等。

此代码 sn-p 尝试访问 android.graphics.Camera 而不是 android.hardware.Camera 的问题是什么?我是 android 的新手,所以这对我来说是一个陡峭的学习曲线。

【问题讨论】:

    标签: android flashlight


    【解决方案1】:

    import android.graphics.Camera 需要被移除 - 否则不清楚正在使用哪个相机。

    一直在学习新事物!

    【讨论】:

    • 导入android.hardware.Camera;反而。谢谢。
    猜你喜欢
    • 2013-02-27
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多