Я попробовал этот код включить/выключить вспышку:
Включите/выключите светодиодный индикатор камеры/вспышку в Samsung Galaxy Ace 2.2.1 и вкладке Galaxy
и это сработало для меня, я имею в виду, что он включил вспышку, но теперь я не могу отключить вспышку после нажатия кнопки.
Это мой код:
public class Main extends Activity
{
private Camera camera;
private Button buttonOn;
private Button buttonOff;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
buttonOn = (Button) findViewById(R.id.buttonOn);
buttonOff = (Button) findViewById(R.id.buttonOff);
buttonOn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try {
turnOn();
} catch (Exception ex) {
}
}
});
buttonOff.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
try {
turnOff();
} catch (Exception ex) {
}
}
});
}
@Override
public void onPause(){
super.onPause();
if( camera != null )
{
camera.release();
camera = null;
}
super.onPause();
}
@Override
public void onResume(){
super.onResume();
}
@Override
public void onStart(){
super.onStart();
}
@Override
public void onStop(){
super.onStop();
}
@Override
public void onDestroy(){
super.onDestroy();
}
@Override
public void onRestart(){
super.onRestart();
}
private void turnOff()
{
camera.stopPreview();
camera.release();
}
private void turnOn()
{
camera = Camera.open();
camera.startPreview();
camera.autoFocus(new AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
}
});
Parameters params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(params);
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
}
}
Таким образом, светодиод включается, когда я сначала нажимаю кнопку buttonOff. Если я нажму кнопку buttonOn, прежде чем нажимать на кнопкуOff, это не сработает. Как только я это сделаю, светодиод работает постоянно, но я не могу отключить его, когда я нажимаю кнопку buttonOff.
Если я поставлю эту часть кода:
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
вместо функции "turnOff", где она теперь, тогда светодиод находится только около 5 секунд. Я пробовал использовать thread.sleep между обеими частями: режим вспышки включен и режим вспышки выключен, как я читал в сообщении, но он тоже не работал.
Есть идеи об этом?
Заранее спасибо.
Согласно ссылке, которую вы Camera.release()
вам нужно вызвать Camera.release()
в вашей кнопке...