试图在屏幕上打印出数量的相机()

时间:2014-01-07 10:18:18

标签: java android

我目前正在学习Java和一些Android编程,我只想在手机上玩一下相机。首先,我想使用 getNumberOfCameras()方法在屏幕上打印出Cameras的数量。

所以这是源代码的相关部分:

TextView AnzahlKameras = (TextView) findViewById(R.id.ValAnzahlKamerasTextView);

int numberOfCameras;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cam_stream);
    numberOfCameras = Camera.getNumberOfCameras();
    AnzahlKameras.setText(numberOfCameras);
}

如您所见,我创建了一个TextView,我想在其中打印出相机的数量。我理解它的方式, getNumberOfCameras()只打印出一个整数。我刚修改了自动生成的“main”类的代码。

代码似乎很好,我可以导出* .apk 文件并将其安装在我的手机上。但是,每当我尝试启动应用程序时,它都会显示一条错误消息,指出该应用程序已停止工作并将其重新投入我的主屏幕。

如果这似乎是一个愚蠢的问题,我会感激任何帮助并原谅我。想想我是所有这一切的新手。

谢谢!

编辑:这是请求的日志文件。

01-07 11:29:06.665 I/ActivityManager(2544): Timeline: Activity_launch_request id:de.phkr.camstream time:11468943
01-07 11:29:06.665 I/ActivityManager(2139): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.phkr.camstream/.CamStream} from pid 2544
01-07 11:29:06.866 I/ActivityManager(2139): Start proc de.phkr.camstream for activity de.phkr.camstream/.CamStream: pid=22295 uid=10115 gids={50115, 1006, 1028, 1015}
01-07 11:29:07.066 E/AndroidRuntime(22295): Process: de.phkr.camstream, PID: 22295
01-07 11:29:07.066 E/AndroidRuntime(22295): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.phkr.camstream/de.phkr.camstream.CamStream}: java.lang.NullPointerException
01-07 11:29:07.066 E/AndroidRuntime(22295):     at de.phkr.camstream.CamStream.<init>(CamStream.java:11)
01-07 11:29:07.076 W/ActivityManager(2139):   Force finishing activity de.phkr.camstream/.CamStream
01-07 11:29:07.826 W/ActivityManager(2139): Activity pause timeout for ActivityRecord{425392e8 u0 de.phkr.camstream/.CamStream t14 f}
01-07 11:29:08.928 I/ActivityManager(2139): Process de.phkr.camstream (pid 22295) has died.

2 个答案:

答案 0 :(得分:3)

试试这个: 如果您已经添加了权限,那么就会出现一个愚蠢的错误,即

AnzahlKameras.setText(numberOfCameras);替换为AnzahlKameras.setText(" "+numberOfCameras);

也可以在onCreate()方法中调用TextView AnzahlKameras = (TextView) findViewById(R.id.ValAnzahlKamerasTextView);

我认为它会被解决。

答案 1 :(得分:1)

您需要向清单添加这些权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

试试这个:

TextView anzahlKameras;

int numberOfCameras;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cam_stream);
    numberOfCameras = Camera.getNumberOfCameras();
    anzahlKameras= (TextView) findViewById(R.id.ValAnzahlKamerasTextView);
    anzahlKameras.setText(numberOfCameras);
    }

您必须在OnCreate方法期间或之后使用findViewById。否则,它将返回null

Documentation