【问题标题】:LED flash light activationLED闪光灯激活
【发布时间】:2013-08-05 21:42:40
【问题描述】:

我正在尝试使用我的 Android 设备中内置的闪光灯 LED。我发现一个现有的 question 非常有用,但我现在看到一个奇怪的编译错误。问题是我检查闪存可用性的代码部分。

boolean FlashAvails=Context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

有一个编译错误显示“无法从类型 Context 对非静态方法 getPackageManager() 进行静态引用”。

【问题讨论】:

  • 变量不是静态的,所以我不明白为什么我会收到这条消息

标签: android camera android-context led


【解决方案1】:

根据 Javadoc,getPackageManager() 方法不是静态的: http://developer.android.com/reference/android/content/Context.html

您需要获取对上下文的引用,然后才能调用该方法。

要获得对上下文的引用,您可以:

Context appContext =  Context.getApplicationContext();

然后你可以通过如下方式访问包管理器:

appContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

确保包含导入:

import android.content.Context;

假设您使用的是 Eclipse,您可以按下:ctrl-shift-o,它会重新组织您的导入并拉入任何缺失的内容。

如果您仍然遇到问题,另一种方法是获取相机参数,如以下帖子所述:How to find flashlight feature is available or not in device < = sdk 4

【讨论】:

  • 我如何获得对上下文的引用?
  • 那么 Context.getApplicationContext() 是否替换了我原来帖子中的“Context”?那也不编译。如何在完成我想要的工作时对方法进行非静态引用
  • 您遇到什么错误?我已经更新了我的答案来解释我在说什么。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
相关资源
最近更新 更多