本文将全程带着大家一步步写出一个趣味小demo——速算题自动批改程序,并附上完整代码下载链接,供大家学习使用!
**视频课程链接请点击 这里
前期准备
如题所示,今天的课程是如题所示,今天的课程是一堂实践小课。一堂实践小课。 课程示例在Android 9环境下顺利执行,Android studio使用版本为3.5.2,大家在学习之前请安装好Android studio。
自动批改算术题的程序开发流程比较简单,其执行流程如下图所示:
支持拍照和本地图片选择两种模式,核心在于调用科大讯飞提供的“拍照速算识别”引擎,然后解析引擎,返回的结果进行绘图展示即可。
为了成功调用科大讯飞提供的“拍照速算识别”引擎,我们需要先在讯飞开放平台上注册并申请一个appid以备使用.
成功申请后,在控制台点击左侧“文字识别”-> “拍照速算识别”,记录下APPID、APISecret、APIKey备用。
以上的课前准备完成之后,接下来就可以进入程序开发环节啦~
开发环节6部曲
第一部曲: 拍照并展示
调用相机的核心代码如下
// 启动相机程序
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, 1);
try {
// 将拍摄的照片显示出来
Bitmap bitmap =
BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
Bitmap bitmap = image_itr(imageUri);
picture.setImageBitmap(bitmap);
}
catch (Exception e)
{
e.printStackTrace();
}
不过这里有两个容易踩坑的点需要注意:
1.在7.0以上系统中,Android不再允许在app中把file://Uri暴露给其他app,所以不能直接通过file://访问文件,需要使用官方给出的解决方案FileProvider
2.需要提供相机和外部存储访问权限
第二部曲: 访问文件
//如果没有权限则申请权限
if (ContextCompat.checkSelfPermission(ImageAlbumShow.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(ImageAlbumShow.this, new String[