Ответ 1
У меня была такая же проблема, и я решил ее с помощью Surface View с шириной 1px и высотой 1px
У меня есть следующая проблема: Приложение My Flashlight отлично работает на моем Samsung Galaxy S2, но, к сожалению, не на Samsung Galaxy Nexus (проблема: фонарик игнорирует щелчок по кнопке → отсутствие реакции, отсутствие света, отсутствие сбоя, отсутствие исключения). Я прочитал "Светодиодный фонарик на Galaxy Nexus, управляемый каким API?" здесь, в stackoverflow, но это не помогло мне, так как моя проблема все еще происходит. Это мой код для управления светом:
final Button FlashLightControl = (Button)findViewById(R.id.ledbutton);
FlashLightControl.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View arg)
{
if(camera != null)
{
//in case light is on we will turn it off
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.stopPreview();
camera.release();
camera = null;
}
else
{
// light is off - we turn it on
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();
}
}});
Любые идеи? Ради полноты - это разрешения, которые я добавил в Androidmanifest.xml:
<uses-feature android:name="android.hardware.camera.flash" />
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Может кто-нибудь помочь?
С уважением, CarpeTemporem
У меня была такая же проблема, и я решил ее с помощью Surface View с шириной 1px и высотой 1px
У меня также была та же проблема, но я пытался включить светодиод из Сервиса, поэтому я не мог использовать 1x1 SurfaceView. Вот что я сделал, чтобы заставить его работать.
private void turnLEDOn() throws IOException
{
// In order to work, the camera needs a surface to turn on.
// Here I pass it a dummy Surface Texture to make it happy.
camera = Camera.open();
camera.setPreviewTexture(new SurfaceTexture(0));
camera.startPreview();
Parameters p = camera.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
}
private void turnLEDOff()
{
if (camera != null)
{
// Stopping the camera is enough to turn off the LED
camera.stopPreview();
camera.release();
camera = null;
} else
throw new NullPointerException("Camera doesn't exist to turn off.");
}
SurfaceTexture была добавлена в API Level 11 (Android 3.0), поэтому она будет работать только на Honeycomb или новее. Для более старых уровней API вы можете придерживаться трюка SurfaceView в другом ответе.