2012-02-29 37 views
8

Tôi gặp sự cố sau: Ứng dụng đèn pin hoạt động tốt trên Samsung Galaxy S2 nhưng tiếc là không có trên Samsung Galaxy Nexus (vấn đề: đèn pin bỏ qua nút nhấp -> không phản ứng, không có ánh sáng, không có tai nạn, không có ngoại lệ). Tôi đã đọc "đèn pin LED trên Galaxy Nexus có thể điều khiển bằng API nào?" ở đây trong stackoverflow nhưng nó đã không giúp tôi kể từ khi vấn đề của tôi vẫn xảy ra. Đây là của tôi mã đoạn để kiểm soát ánh sáng:Đèn LED không hoạt động trên Samsung Galaxy Nexus

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(); 
      } 
     }}); 

Bất kỳ ý tưởng? Vì mục đích hoàn chỉnh - đây là các quyền tôi đã thêm vào 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"/> 

Ai đó có thể trợ giúp?

Trân trọng! CarpeTemporem

+0

Tôi cũng muốn biết rằng quá –

Trả lời

3

tôi đã cùng một vấn đề và giải quyết nó thông qua sử dụng Surface Xem có chiều rộng 1px và chiều cao 1px

+0

Cảm ơn bạn! Bây giờ nó hoạt động :) –

+4

có nghĩa là gì khi xem bề mặt 1px/1px –

+0

@LastWarrior Surface View có chiều cao 1px và chiều rộng 1px đặt ở đâu đó và gọi các cuộc gọi lại của surfaceview –

16

Tôi cũng có cùng một vấn đề, nhưng tôi đã cố gắng để bật LED từ một Dịch vụ, vì vậy tôi không thể sử dụng SurfaceView 1x1. Đây là những gì tôi đã làm để làm cho nó hoạt động.

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 được thêm vào API cấp 11 (Android 3.0) để nó chỉ hoạt động trên Honeycomb hoặc mới hơn. Đối với các cấp API cũ hơn, bạn có thể sử dụng mẹo SurfaceView trong câu trả lời khác.

+1

'SurfaceTexture mới (0)' hoạt động trên Nexus 5 chạy Android 5.1 của tôi, cảm ơn! – shkschneider

Các vấn đề liên quan