Я получаю следующую ошибку при передаче байтового массива от одного действия другому через намерение.Я не уверен, что это потому, что массив слишком большой, или что-то еще.Вот ошибка:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.roshan.android.picscheduler, PID: 19689
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.roshan.android.picscheduler/com.roshan.android.picscheduler.ImageDetectActivity}: java.lang.NullPointerException: Attempt to get length of null array
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.roshan.android.picscheduler.ImageDetectActivity.onCreate(ImageDetectActivity.java:40)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
В основной активности у меня есть этот код:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mCameraView.setCameraListener(new CameraKitView.CameraListener() {
@Override
public void onOpened() {
}
@Override
public void onClosed() {
}
});
mCameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCameraView.captureImage(new CameraKitView.ImageCallback() {
@Override
public void onImage(CameraKitView cameraKitView, byte[] bytes) {
imageBytes = bytes;
}
});
Intent intent = new Intent(MainActivity.this.getApplicationContext(), ImageDetectActivity.class);
intent.putExtra("CapturedImage", imageBytes);
intent.putExtra("width", mCameraView.getWidth());
intent.putExtra("height", mCameraView.getHeight());
startActivity(intent);
//TODO: Launch new activity, pass the bitmap
// Maybe use Fragments instead of new activity?
}
});
}
В методе onCreate целевой деятельности у меня есть это:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_detect);
intent = getIntent();
imageBytes = intent.getByteArrayExtra("CapturedImage");
cameraWidth = intent.getIntExtra("width", 0);
cameraHeight = intent.getIntExtra("height", 0);
bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
bitmap = Bitmap.createScaledBitmap(bitmap, cameraWidth, cameraHeight, false);
image = FirebaseVisionImage.fromBitmap(bitmap);
detector = FirebaseVision.getInstance().getOnDeviceTextRecognizer();
result = detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
String resultText = firebaseVisionText.getText();
Log.d("TEST", resultText);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
Ошибка выдается, как только я пытаюсь декодировать байтовый массив, что, как я предполагаю, означает, что он получает нулевой массив.