2016-10-18 2 views
1

내가 직면하고있는 문제는 방법 킷캣와 젤리 빈과 작업이지만이 에서 일하는 일부롤리팝 장치안드로이드 : 플래시 라이트는 롤리팝

되지 않은 토치 응용 프로그램을 개발하고 작동하지 내 MainActivity.java되어 다음

public class MainActivity extends AppCompatActivity { 
    static Camera cam=null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    } 

    public void On(View V) { 
    try { 
     if (getPackageManager().hasSystemFeature(
         PackageManager.FEATURE_CAMERA_FLASH)) { 
     cam = Camera.open(); 
     Camera.Parameters p = cam.getParameters(); 
     p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
     cam.setParameters(p); 
     cam.startPreview(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getBaseContext(),e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 

    } 

    public void Off(View V) { 
    try { 
     if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) { 
     cam.stopPreview(); 
     cam.release(); 
     cam = null; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getBaseContext(), "Exception flashLightOff", Toast.LENGTH_SHORT).show(); 
    } 
    } 
} 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myapplication"> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.FLASHLIGHT" /> 


    <uses-feature android:name="android.hardware.camera.autofocus" /> 
    <uses-feature android:name="android.hardware.camera.flash" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

롤리팝에 대한 방법을 찾을 수 없습니다. 도움을 받으실 수 있습니다.

답변

0

시도 다음 코드를

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.pm.PackageManager; 
import android.hardware.Camera; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

import java.io.IOException; 

public class MainActivity extends Activity { 
    Camera mCamera; 
    Camera.Parameters mParams; 
    boolean on = false; 
    int times; 
    int delay; 
    public static final String PREFS_NAME = "Torch"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button b=(Button)findViewById(R.id.button); 
     turnOff(); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 



        Thread t = new Thread() { 
         public void run() { 
          try { 
           if (mCamera == null) { 
            mCamera = Camera.open(); 
            try { 
             mCamera.setPreviewDisplay(null); 
            } catch (IOException e) { 
             e.printStackTrace(); 
            } 
            mCamera.startPreview(); 
           } 


            toggleFlashLight(); 


           if (mCamera != null) { 
            mCamera.stopPreview(); 
            mCamera.release(); 
            mCamera = null; 
           } 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 
        }; 

        t.start(); 
       } 





     }); 


    } 



    public void toggleFlashLight() { 
     if (!on) { 
      turnOn(); 
     } else { 
      turnOff(); 
     } 
    } 
    public void turnOn() { 
     if (mCamera != null) { 
      mParams = mCamera.getParameters(); 
      mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
      mCamera.setParameters(mParams); 
      Toast.makeText(getApplicationContext(),"Flash ON",Toast.LENGTH_SHORT).show(); 

      on = true; 
     } 
    } 
    public void turnOff() { 
     if (mCamera != null) { 
      mParams = mCamera.getParameters(); 
      if (mParams.getFlashMode().equals(Camera.Parameters.FLASH_MODE_TORCH)) { 
       mParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
       mCamera.setParameters(mParams); 
      } 
     } 
     on = false; 
    } 


} 

당신이 기능 분기점를 호출하여 모든 시간을 끌 수는

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 
0

Camera2 API은 Android 기기에 연결된 개별 카메라 기기에 대한 인터페이스를 제공합니다. 이 클래스는 사용되지 않는 Camera 클래스를 대체합니다.

Android Camera2Basic Sample을 사용하십시오.

+0

Manifest.xml을 권한을 추가하는 것을 잊지 마세요 flashLight 만 사용하려면 –

+0

https://github.com/tmmluis/Torch-plus/blob/에 도움이됩니다. master/app/src/main/java/com/plasticfantastic/torch/MainActivity.java –

+0

은 롤리팝과 마시맬로에서 작동합니다. –

관련 문제