java - 生成具有多级数据的条形码以回读到 Android 应用程序?
问题描述
我使用以下 GitHub 存储库在我的 Android 应用程序中创建了一个条形码扫描仪:https ://github.com/yuriy-budiyev/code-scanner ,效果很好。
我正在尝试生成几个条形码或 QR 码以将三个元素读回我的应用程序,这些元素与膳食有关,它们是:膳食/零食名称、卡路里和克数,以及它们的值。到目前为止,我研究过的所有条形码生成器都只允许输入一个值。我想知道是否有人可以解释如何实现这一点?在我的 XML 中,我TextViews
的 id 最终将与数据库相关联,我想从条形码中获取数据并将其显示给这些TextViews
.
我能够扫描代码并获取数据,但我正在努力思考如何在我的应用程序中将值设置为 ID,我已经在Lifesum等膳食跟踪应用程序中看到了这一点,代码将被扫描并且这些值将自动添加到相应的字段中。
我尝试过的一些条码生成器:
https://www.ruggedtabletpc.com/barcode-generator https://www.the-qrcode-generator.com/
XML
<com.budiyev.android.codescanner.CodeScannerView
android:id="@+id/scanner_view"
android:layout_width="match_parent"
android:layout_height="400dp"
app:autoFocusButtonColor="@android:color/white"
app:autoFocusButtonVisible="true"
app:flashButtonColor="@android:color/white"
app:flashButtonVisible="true"
app:frameColor="@android:color/black"
app:frameCornersSize="50dp"
app:frameCornersRadius="0dp"
app:frameAspectRatioWidth="1"
app:frameAspectRatioHeight="1"
app:frameSize="0.75"
app:frameThickness="2dp"
app:maskColor="#77000000"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:text="Scan something.."
android:layout_marginTop="20dp"
android:fontFamily="sans-serif-black"
android:gravity="center"/>
<TextView
android:id="@+id/grams"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="200dp"
android:layout_marginTop="88dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Grams" />
<TextView
android:id="@+id/mealName"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="200dp"
android:layout_marginTop="59dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Meal Name" />
<TextView
android:id="@+id/mealNameText"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="100dp"
android:layout_marginTop="59dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Meal Name:" />
<TextView
android:id="@+id/gramsText"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="100dp"
android:layout_marginTop="88dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Grams:" />
<TextView
android:id="@+id/calories"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="200dp"
android:layout_marginTop="118dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Calories" />
<TextView
android:id="@+id/caloriesText"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@+id/scanner_view"
android:layout_marginStart="100dp"
android:layout_marginTop="118dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="Calories:" />
扫描仪活动
private CodeScanner mCodeScanner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scanner_view);
CodeScannerView scannerView = findViewById(R.id.scanner_view);
RequestCameraPermission requestCameraPermission = new RequestCameraPermission(this);
requestCameraPermission.verifyStoragePermissions();
mCodeScanner = new CodeScanner(this, scannerView);
mCodeScanner.setDecodeCallback(new DecodeCallback() {
@Override
public void onDecoded(@NonNull final Result result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(ScannerView.this, result.getText(), Toast.LENGTH_SHORT).show();
}
});
}
});
scannerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCodeScanner.startPreview();
}
});
}
@Override
protected void onResume() {
super.onResume();
mCodeScanner.startPreview();
}
@Override
protected void onPause() {
mCodeScanner.releaseResources();
super.onPause();
}
private boolean checkPermission() {
if (ContextCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
return true;
}
return false;
}
解决方案
推荐阅读
- flutter - 颤振 - 提供者
- google-bigquery - 将 CSV 上传附加到现有 BigQuery 表时出现问题
- javascript - 选择一条线来改进。初学者效率代码问题
- cloudflare - 在 Cloudflare 工作器中缓存每个获取请求
- c# - 成功保存记录后显示消息
- java - setOnClickListener 中的 SQLException(new View.OnClickListener() - Android Studio
- javascript - 使用 FileReader 发送原始文件数据
- lotus-domino - 在 Domino 服务器端签署数据库
- dotnetnuke - 在 2sxc 应用程序中创建新视图时,无法设置“视图中使用的数据模型”字段
- apex - 异步函数中的 RefreshApex