2013-03-14 3 views
4

카메라 손전등을 켜거나 끄는 버튼이있는 작은 안드로이드 위젯을 쓰려고합니다. 나는 거기에 수천 가지가 있지만, 안드로이드를 배우기를 원한다. (그리고 작은 단계가 가장 좋은 방법 인 것 같다.)Android : LED가 켜지지 않거나 꺼지지 않습니다.

이제 공식 문서와 웹에서 무료 자습서를 읽고 여기에 대한 stackoverflow를 검색했습니다. 지금까지 오류가 발생하지 않았으므로 LogCat은 모든 것이 제대로 작동한다고 말합니다. 그러나 Galaxy Nexus에서 앱을 테스트 할 때 스위치가 켜지거나 꺼지기 만하면되지만 카메라 LED는 켜지거나 꺼지지 않습니다. 의도 한대로

if (isLightOn) { 
    Log.d("receiver", "flashlight is on, disabling it"); 
    if (camera != null) { 
     param.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
     camera.setParameters(param); 
     camera.release(); 
     camera = null; 
     isLightOn = false;      
    } 
} else {         
    Log.d("receiver", "flashlight is off, enabling it"); 
    camera = Camera.open(); 

    if(camera == null) { 
     Toast.makeText(context, R.string.no_camera, Toast.LENGTH_SHORT).show(); 
    } else { 
     // Set the torch flash mode      
     param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
     try { 
      camera.setParameters(param);     
      isLightOn = true;              
     } catch (Exception e) { 
      Toast.makeText(context, R.string.no_flash, Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

어떤 아이디어가 왜이 작동하지 않습니다 여기에

내 코드 (LED가 실제로의 ON/OFF 부분 만)인가?

+1

<사용 - 권한 안드로이드 : 이름 = "android.permission.CAMERA"/> 당신이 당신의 매니페스트에이 권한을 추가 했습니까? – draksia

+0

당신은 또한'camera = Camera.open();이 부족합니다. 매니페스트에서도''가 필요할 수도 있습니다. – g00dy

+0

권한이 설정되어 있고 camera.open()은 내가 게시 한 코드 위에 몇 줄 위에 있습니다. – roecket

답변

0

일반적으로보십시오 here. 그것은 정확하게 설명됩니다.

편집 :

무엇을;의 링크 :

  1. 전원을 켜고

    에 카메라 = Camera.open(); 매개 변수 p = camera.getParameters(); p.setFlashMode (Parameters.FLASH_MODE_TORCH); camera.setParameters (p); camera.startPreview();

  2. 를 켜고

    오프 카메라 Camera.open =(); 매개 변수 p = camera.getParameters(); p.setFlashMode (Parameters.FLASH_MODE_OFF); camera.setParameters (p); camera.stopPreview();

그리고 AndroidManifest.xml에 다음 권한을 부여하십시오.

P.S이 프로젝트는 이클립스 3.7에서 개발하고, 삼성 갤럭시 S2 (안드로이드 2.3.3)으로 시험한다.

  1. Android 레이아웃 버튼 전용입니다.

파일 : 고해상도/레이아웃/main.xml에

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Button 
     android:id="@+id/buttonFlashlight" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:text="Torch" /> 

</RelativeLayout> 
  • 활동 /손전등을 켜 코드, 버튼을 읽고, 그것을해야

      자명하다.

      package com.mkyong.android; 
      
      import android.app.Activity; 
      import android.content.Context; 
      import android.content.pm.PackageManager; 
      import android.hardware.Camera; 
      import android.hardware.Camera.Parameters; 
      import android.os.Bundle; 
      import android.util.Log; 
      import android.view.View; 
      import android.view.View.OnClickListener; 
      import android.widget.Button; 
      
      public class FlashLightActivity extends Activity { 
      
      //flag to detect flash is on or off 
      private boolean isLighOn = false; 
      
      private Camera camera; 
      
      private Button button; 
      
      @Override 
      protected void onStop() { 
          super.onStop(); 
      
          if (camera != null) { 
           camera.release(); 
          } 
      } 
      
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.main); 
      
          button = (Button) findViewById(R.id.buttonFlashlight); 
      
          Context context = this; 
          PackageManager pm = context.getPackageManager(); 
      
          // if device support camera? 
          if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
           Log.e("err", "Device has no camera!"); 
           return; 
          } 
      
          camera = Camera.open(); 
          final Parameters p = camera.getParameters(); 
      
          button.setOnClickListener(new OnClickListener() { 
      
           @Override 
           public void onClick(View arg0) { 
      
            if (isLighOn) { 
      
             Log.i("info", "torch is turn off!"); 
      
             p.setFlashMode(Parameters.FLASH_MODE_OFF); 
             camera.setParameters(p); 
             camera.stopPreview(); 
             isLighOn = false; 
      
            } else { 
      
             Log.i("info", "torch is turn on!"); 
      
             p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
      
             camera.setParameters(p); 
             camera.startPreview(); 
             isLighOn = true; 
      
            } 
      
           } 
          }); 
      
      } 
      } 
      
    1. 안드로이드 권한 할당 카메라 권한.

    파일 : AndroidManifest.XML

    <?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        package="com.mkyong.android" 
        android:versionCode="1" 
        android:versionName="1.0" > 
    
        <uses-sdk android:minSdkVersion="10" /> 
    
        <uses-permission android:name="android.permission.CAMERA" /> 
        <uses-feature android:name="android.hardware.camera" /> 
    
        <application 
         android:debuggable="true" 
         android:icon="@drawable/ic_launcher" 
         android:label="@string/app_name" > 
         <activity 
          android:label="@string/app_name" 
          android:name=".FlashLightActivity" > 
          <intent-filter > 
           <action android:name="android.intent.action.MAIN" /> 
           <category android:name="android.intent.category.LAUNCHER" /> 
          </intent-filter> 
         </activity> 
        </application> 
    
    </manifest> 
    
  • +0

    링크의 관련 부분을 답에 추가하십시오. 링크가 좋지 않을 수 있습니다. –

    +0

    위젯 대신 간단한 단추로 링크 된 코드를 사용해 보았습니다. 그러나 그 간단한 코드조차도 작동하지 않습니다. 오류도 예외도 없지만 여전히 플래시는 없습니다. – roecket

    +0

    그럼 디버깅 해보고, 지금까지 아무 생각없이 남았습니다. : ( – g00dy

    관련 문제