我制作手电筒应用,我使用片段。 当我按下按钮时,灯笼灯延迟超过4秒,我不知道发生了什么。 此外,当我再次按下开关按钮时,手电筒不会关闭 有什么想法吗?
此外,我想用另一个按钮制作频闪灯笼灯。
我在互联网上搜索,但我没有找到另一个选项来制作此功能,只有这个。
这是我的代码
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;
public class HerramientasFragment extends Fragment {
private Camera cam;
private Switch linterna;
public HerramientasFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
cam = Camera.open();
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View masterView = inflater.inflate(R.layout.fragment_herramientas, container, false);
linterna = (Switch) masterView.findViewById(R.id.switch_linterna);
linterna.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Switch liternaSwitch = (Switch) v;
Parameters p;
if (liternaSwitch.isChecked()) {
p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
} else {
p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
cam.stopPreview();
}
}
});
return masterView;
}
}
答案 0 :(得分:2)
4秒延迟可能与硬件/操作系统有关并且无法控制。这并不是说它无法修复,但我无法找到与之相关的任何内容(有些Android专家可能会有更好的想法)。
灯光未关闭可能是因为您需要添加this answer中提到的cam.release();
。
对于频闪灯,我发现了this tutorial。它似乎几乎就是你要找的东西。
答案 1 :(得分:0)
仅删除行cam.startPreview()
对我有用。
public void flashLightOn(){
p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
}
public void flashLightOff(){
p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
}