2012-11-02 4 views
1

나는 플래시 라이트 앱을 만들었으며 스트로브 라이트 기능을 허용하기 위해 부가 기능을 만들고 싶습니다.스트로브 라이트를 버튼 클릭시 LED 조명으로 만들기

다른 버튼으로 설정하고 싶습니다. 동일한 버튼이 아닙니다. 나는 타이머를 사용해야한다고 생각하지만, 나는 자바를 처음 사용했기 때문에 타이머를 사용한 적이 없다.

public class FlashLightActivity extends Activity { 


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 (!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() { 
     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

당신은 전체 화면으로 만들기 위해 활동에 테마를 설정합니다 처리기

public class Strobe extends Activity { 

    private LinearLayout mLinearLayout; 

    private Handler mHander = new Handler(); 

    private boolean mActive = false; 
    private boolean mSwap = true; 

    private final Runnable mRunnable = new Runnable() { 

     public void run() {   
      if (mActive) { 
       if (mSwap) {      
        mLinearLayout.setBackgroundColor(Color.WHITE); 
        mSwap = false; 
        mHander.postDelayed(mRunnable, 20); 
       } else { 
        mLinearLayout.setBackgroundColor(Color.BLACK); 
        mSwap = true; 
        mHander.postDelayed(mRunnable, 100); 
       } 
      }   
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mLinearLayout = (LinearLayout) findViewById(R.id.strobe); 
     startStrobe(); 
    } 

    private void startStrobe() {   
     mActive = true; 
     mHander.post(mRunnable); 
    } 
} 

을 사용할 수

여기 손전등 내 코드입니다.

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"