Я создаю приложение OCR для чтения текста.При нажатии на кнопку открывается камера, и я делаю фотографию, когда я получаю сообщение об ошибке
java.lang.NullPointerException.uri
Исключение происходит где-тов этой строке кода
InputStream stream = getContext().getContentResolver().openInputStream(data.getData());
requestCode
равен 100
, а resultCode
равен -1
Ниже приведен полный код, с которым я сейчас работаю.
public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
private TextRecognizer detector;
private TextView textView;
private static final int REQUEST_IMAGE_CAPTURE = 1888;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
textView = (TextView) root.findViewById(R.id.textView);
detector = new TextRecognizer.Builder(getActivity()).build();
root.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent,100);
}
});
return root;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == 100 && resultCode == RESULT_OK){
try{
InputStream stream = getContext().getContentResolver().openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(stream);
stream.close();
if(detector.isOperational() && null != bitmap){
Frame frame = new Frame.Builder().setBitmap(bitmap).build();
SparseArray<TextBlock> textBlocks = detector.detect(frame);
StringBuilder sb = new StringBuilder();
for( int i = 0; i < textBlocks.size(); ++i){
TextBlock tb = textBlocks.get(i);
sb.append(tb.getValue());
}
if(textBlocks.size() == 0){
textView.setText("Scan failed.");
} else {
textView.setText(sb.toString());
}
} else {
textView.setText("Invalid Image");
}
} catch (Exception e){
textView.setText(e.toString());
}
}
}
}