1
我正在用前置攝像頭拍攝應用程序,當用戶點擊NFC卡時,它將拍攝他們的圖像。所以我做了相機和nfc讀卡器的表面視圖,在活動中添加了這兩種功能。兩人都在分開工作,但是當我點擊一張牌面時,我感覺沒有任何回報。獲取錯誤在這行帶有前置攝像頭的NFC讀卡器
NullPointerException異常
mCamera.takePicture(null, null, ReadCardActivity.this);
我添加了一個按鈕,也波紋管的surfaceview如果我點擊該圖像拍攝沒有任何問題。
我的代碼波紋管 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_card);
ButterKnife.bind(this);
mPreview = (SurfaceView) findViewById(R.id.preview);
mPreview.getHolder().addCallback(this);
mPreview.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mDialog = new AlertDialog.Builder(this).setNeutralButton("Ok", null).create();
mAdapter = NfcAdapter.getDefaultAdapter(this);
if (mAdapter == null) {
showMessage(R.string.error, R.string.no_nfc);
finish();
return;
}
// do we have a camera?
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG).show();
finish();
} else {
cameraId = findFrontFacingCamera();
//cameraId = findBackFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "Sorry you don't have secondary camera", Toast.LENGTH_LONG).show();
finish();
} else {
releaseCameraAndPreview();
mCamera = Camera.open(cameraId);
}
}
mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
mAdapter = NfcAdapter.getDefaultAdapter(this);
mNdefPushMessage = new NdefMessage(new NdefRecord[]{newTextRecord(
"Message from NFC Reader :-)", Locale.ENGLISH, true)});
}
private void releaseCameraAndPreview() {
if (mCamera != null) {
mCamera.release();
mCamera = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
mCamera.release();
mAdapter.disableForegroundDispatch(this);
Log.d("CAMERA", "Destroy");
}
@OnClick(R.id.buttonCaptureImage)
public void capturingImage() {
System.gc();
mPreview.post(new Runnable() {
public void run() {
mCamera.takePicture(null, null, ReadCardActivity.this);
}
});
}
您沒有包含點擊NFC卡時拍攝照片的代碼。你在活動中使用'BroadcastReceiver'嗎? –
如果您需要更多信息,然後更新您的問題 – Majkl
我解決了這個問題,謝謝你的回覆,我會更新答案。 – Anirban