请谅解,我对安卓系统非常陌生,我的Java技能也仅仅停留在基础阶段。
虽然我花费了很少的时间就成功实现了条形码扫描功能,但是摄像头相关的部分并不那么容易。
我有一个主Activity类,在启动时调用条形码扫描功能;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button cameraButton = (Button) findViewById(R.id.cameraButton);
cameraButton.setOnClickListener( new OnClickListener(){
public void onClick(View v ){
IntentIntegrator.initiateScan(MakroDroidActivity.this, "Please scan order barcode", "Please scan a valid order barcode", "Yes", "No");
}
});
}
到目前为止,我已经正确处理了意图,如下所示:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case IntentIntegrator.REQUEST_CODE: {
if (resultCode != RESULT_CANCELED) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanResult != null) {
String upc = scanResult.getContents();
if (upc.startsWith("ORD"))
{
//we have a valid order barcode
Camera cam = Camera.open();
cam.takePicture(shutterCallback, rawCallback, jpegCallback);
}
else
{
IntentIntegrator.initiateScan(MakroDroidActivity.this, "Please scan again", "Please scan a valid order barcode", "Yes", "No");
}
}
}
break;
}
}
}
我已经设置好回调函数(目前没有任何代码),但是在扫描条形码后,设备只显示黑屏。我需要在调试应用程序后重新启动设备,因为相机不再可用(我怀疑没有清理我的引用,所以相机被锁定到我的应用程序)。
请问有人可以向我解释如何使用相机并将输出保存到SD卡上吗?(我计划在SD卡上使用特定文件夹,类似于:)
filepath = filepath + UUID.randomUUID().toString() + ".jpg";
将一个新的、不冲突的文件名保存到文件夹中。
(设备是一款T-Mobile Pulse Mini手机(我相信是华为制造),我看到其他人说相机存在驱动程序问题,但我更倾向于认为这是我理解不足而不是硬件问题。)
非常感谢您提供的任何帮助。