我在Java编程方面还很陌生,需要您的帮助。
我是公司的培训生,需要在Android Studio上进行盘点应用。
我实现了扫描仪(ZXing),它可以工作,但是我需要保存结果。我有不同的Buttons
,对于这些按钮,我需要保存扫描仪结果。例如:我单击按钮A ,结果需要保存在变量A 中。当我点击按钮B 时,需要将其保存在变量B 中。之后,我想通过电子邮件发送此变量。
我停留在保存点。
我有3(4)个活动。其中之一被复制或拆分为取回。
获取的代码:
package app.local.leipziger_messe.lbrenn.cable;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
public class AbgeholtActivity extends AppCompatActivity {
//setzt die für die Buttonzuordnung nötigen Strings
ZwischenSpeicher zs = new ZwischenSpeicher();
//Setzt die IDs für die einzelnen Checkboxen
CheckBox b1_ab;
CheckBox b2_ab;
CheckBox b3_ab;
CheckBox b4_ab;
CheckBox b5_ab;
CheckBox b6_ab;
public String test = "1";
@Override
protected void onCreate(Bundle savedInstanceState) {
//Superklasse wird festgelegt
super.onCreate(savedInstanceState);
//Es wird als Inhalt der Activity das angegebene Layout festgelegt
setContentView(R.layout.activity_abgeholt);
//Checkboxen werden definiert
b1_ab = (CheckBox)findViewById(R.id.b1_ab);
b2_ab = (CheckBox)findViewById(R.id.b2_ab);
b3_ab = (CheckBox)findViewById(R.id.b3_ab);
b4_ab = (CheckBox)findViewById(R.id.b4_ab);
b5_ab = (CheckBox)findViewById(R.id.b5_ab);
b6_ab = (CheckBox)findViewById(R.id.b6_ab);
//TEST NUR EIN TEST
//Buttons werden erstellt und einer ID zugewiesen
final SimpleScannerActivity test_scanner = new SimpleScannerActivity();
final Button button_abgeholt_pc = findViewById(R.id.abgeholt_pc);
button_abgeholt_pc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.button_ergebnis[0] = test;
Toast.makeText(getApplicationContext(),zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
//ntent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
//startActivity(abgeholtpcIntent);
}
});
final Button button_abgeholt_mo = findViewById(R.id.abgeholt_mo);
button_abgeholt_mo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "2";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
String ergebnis = test_scanner.ergebnis_test();
}
});
final Button button_abgeholt_dr = findViewById(R.id.abgeholt_dr);
button_abgeholt_dr.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "3";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
}
});
final Button button_abgeholt_tel = findViewById(R.id.abgeholt_tel);
button_abgeholt_tel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "4";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
}
});
}
public void checkbox_clicked(View v)
{
//Checkt ob die Checkbox angeklickt ist oder nicht (Text ist noch Platzhalter mäßig vorhanden)
if(b1_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity1", Toast.LENGTH_LONG).show();
}
else if (b2_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity2", Toast.LENGTH_LONG).show();
}else if (b3_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity3", Toast.LENGTH_LONG).show();
}else if (b4_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main 4", Toast.LENGTH_LONG).show();
}else if (b5_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity5", Toast.LENGTH_LONG).show();
}else if (b6_ab.isChecked()) {
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity6", Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Setzt das Menu oben Rechts
getMenuInflater().inflate(R.menu.menu_hilfe, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_help) {
//Führt noch nichts aus -> wird dann das von der Main Activity ausführen!
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是MainActivity:
package app.local.leipziger_messe.lbrenn.cable;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
public class MainActivity extends AppCompatActivity {
//Berechtigungscode für die Permissionsabfrage
private int CAMERA_PERMISSION_CODE = 1;
//Erstellung der Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
//Superklasse wird vergeben
super.onCreate(savedInstanceState);
//Es wird der Inhalt der Activity gesetzt
setContentView(R.layout.activity_main);
//Die Permissions werden abgefragt
pCheck();
//Buttons werden initialisiert und erstellt
final Button button_abgeholt = findViewById(R.id.button_abgeholt);
button_abgeholt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die AbgeholtActivity weitergeleitet
Intent abgeholttIntent = new Intent(getApplicationContext(),AbgeholtActivity.class);
startActivity(abgeholttIntent);
}
});
final Button button_hingestellt = findViewById(R.id.button_hingestellt);
button_hingestellt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die HingestelltActivity weitergeleitet
Intent hingestelltIntent = new Intent(getApplicationContext(),HingestelltActivity.class);
startActivity(hingestelltIntent);
}
});
final Button button_weiter = findViewById(R.id.button_weiter);
button_weiter.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die WeiterActivity weitergeleitet
Intent testIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(testIntent);
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//Checkt ob die ID von dem Menu das Hilfe Menu ist
if (id == R.id.action_help) {
//Führt den Debug aus
String debug_test[] = new String[8];
//Erstellt eine neue Instanz von der SimpleScannerActivity
ZwischenSpeicher debug_abfrage = new ZwischenSpeicher();
//Fragt die einzelnen IDs ab, die in der SimpleScannerActivity gesetzt wurden
debug_test[0] = debug_abfrage.button_ergebnis[0];
//Gibt die einzelnen Ergebnisse aus
Toast.makeText(this, debug_test[0], Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
//Checkt ob die Permissions in der Manifest Datei gesetzt wurden
private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
} else {
ActivityCompat.requestPermissions(this,
new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);
}
}
//Gibt das Ergebnis aus und zeigt ob die Berechtigung vom Nutzer erteilt wurde oder nicht
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == CAMERA_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Berechtigung erteilt", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Berechtigung verweigert", Toast.LENGTH_SHORT).show();
}
}
}
//Führt den ganzen Check aus
public void pCheck() {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Berechtigungen vollständig vergeben",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Berechtigungen müssen noch vergeben werden!",Toast.LENGTH_LONG).show();
requestCameraPermission();
}
}
}
这是扫描器(我在代码中测试了一些东西):
package app.local.leipziger_messe.lbrenn.cable;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.io.*;
import app.local.leipziger_messe.lbrenn.cable.MainActivity;
import com.google.zxing.Result;
import java.io.FileWriter;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class SimpleScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
//Die nötigen Buttonids werden definiert
public final static String STATE_DATA = "ButtonIDs";
static final String LOG_TAG = "Test_test";
//Strings zur Nutzung der Buttonids werden festgelegt sowie die nötigen Scanner Elemente
public String abgeholt_pc_id;
public String abgeholt_mo_id;
public String abgeholt_dr_id;
public String abgeholt_tel_id;
public String hingestellt_pc_id;
public String hingestellt_mo_id;
public String hingestellt_dr_id;
public String hingestellt_tel_id;
private static final String TAG = "Code Results:";
private Result scanResult;
public ZXingScannerView mScannerView;
@Override
public void onCreate(Bundle state) {
//Superklasse wird festgelegt
super.onCreate(state);
//Scanner Ansicht wird initzialisiert
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
//Der Scanner wird als Inhalt gesetzt
setContentView(mScannerView); // Set the scanner view as the content view
}
@Override
public void onResume() {
//legt die Superklasse fest
super.onResume();
ZwischenSpeicher zs = new ZwischenSpeicher();
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
Toast.makeText(this, zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
}
@Override
public void onPause() {
//Legt die Superklasse fest
super.onPause();
mScannerView.stopCamera(); // Stop camera on pause
}
@Override
public void handleResult(Result rawResult) {
//führt die Kamerview weiter aus
mScannerView.resumeCameraPreview(this);
//Setzt das das scanResult das rawResult ist
scanResult=rawResult;
//führt die untere Funktion aus
//getrawresult_test();
Log.d("handler","");
AbgeholtActivity AA = new AbgeholtActivity();
ZwischenSpeicher zs = new ZwischenSpeicher();
Toast.makeText(this, zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
}
public Result getrawresult_test() {
Log.d("getrawresult","Result");
AbgeholtActivity AA = new AbgeholtActivity();
ZwischenSpeicher zs = new ZwischenSpeicher();
//liest das Ergebnis aus dem handleResult aus
String result = scanResult.getText();
//
//
//
//
// //Checkt welcher Button gedrückt wurde und speichert das Ergebnis in die entsprechende Variable ein
//
// if (zs.buttonid == "1") {
// Log.d("buttonid1","Result");
// abgeholt_pc_id = result;
// zs.buttonID_array[0] = abgeholt_pc_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[0]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "2") {
// Log.d("buttonid2","Result");
// abgeholt_mo_id = result;
// zs.buttonID_array[1] = abgeholt_mo_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[1]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "3") {
// Log.d("buttonid3","Result");
// abgeholt_dr_id = result;
// zs.buttonID_array[2] = abgeholt_dr_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[2]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "4") {
// Log.d("buttonid4","Result");
// abgeholt_tel_id = result;
// zs.buttonID_array[3] = abgeholt_tel_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[3]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "5") {
// Log.d("buttonid5","Result");
// hingestellt_pc_id = result;
// zs.buttonID_array[4] = hingestellt_pc_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[4]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "6") {
// Log.d("buttonid6","Result");
// zs.buttonID_array[5] = hingestellt_mo_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[5]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "7") {
// Log.d("buttonid7","Result");
// hingestellt_dr_id = result;
// zs.buttonID_array[6] = hingestellt_dr_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[6]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "8") {
// Log.d("buttonid8","Result");
// hingestellt_tel_id = result;
// zs.buttonID_array[7] = hingestellt_tel_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[7]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else {
// Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// }
return scanResult;
}
public String ergebnis_test() {
String ergebnis = scanResult.getText();
return ergebnis;
}
//Es wird eine Intent erstellt, die zur MainActivity wechselt
public void wechselzumainActivity() {
Intent mainactivityIntent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(mainactivityIntent);
}
}
答案 0 :(得分:1)
让我解释一下我最近如何在我的应用程序中实现条形码扫描仪。我的要求是,想要通过我的应用程序出售其图书的用户将扫描其图书封底的条形码(如果有)。扫描仪完成扫描后,将返回条形码中存储的ISBN号。现在,我必须将该ISBN号发布到Web服务,该服务将以JSON格式返回有关该书的完整数据。现在,我将解析JSON并使用Web服务返回的数据填充视图。
现在,在您的情况下,您要扫描条形码,该条形码将返回一个数字(可能是资产ID),并且您希望将此数字发布到数据库或其他内容(这是我的理解。如果我错过了某些内容,请发表评论) )。现在只需执行以下步骤即可完成此操作:
添加依赖项:
首先在您的应用程序级别build.gradle文件中添加条形码相关性。像这样:
SALT
我希望你已经做到了。
声明共享的首选项文件:
现在使用您选择的任何名称声明共享首选项和共享首选项文件。像这样:
BBP RSI close high low open time \
0 NaN NaN 0.000069 0.000071 0.000068 0.000068 1534626000
1 NaN NaN 0.000070 0.000070 0.000068 0.000069 1534644000
2 NaN NaN 0.000072 0.000072 0.000068 0.000070 1534662000
3 NaN NaN 0.000073 0.000073 0.000071 0.000072 1534680000
4 NaN NaN 0.000074 0.000074 0.000072 0.000073 1534698000
5 NaN NaN 0.000073 0.000074 0.000072 0.000074 1534716000
6 NaN NaN 0.000073 0.000074 0.000072 0.000073 1534734000
7 NaN NaN 0.000071 0.000073 0.000071 0.000073 1534752000
8 NaN NaN 0.000072 0.000074 0.000070 0.000071 1534770000
9 NaN NaN 0.000069 0.000072 0.000069 0.000072 1534788000
10 NaN NaN 0.000070 0.000071 0.000068 0.000069 1534806000
11 NaN NaN 0.000072 0.000072 0.000069 0.000070 1534824000
12 NaN NaN 0.000070 0.000072 0.000070 0.000072 1534842000
13 NaN NaN 0.000070 0.000070 0.000069 0.000070 1534860000
14 NaN 56.138260 0.000071 0.000072 0.000069 0.000070 1534878000
15 NaN 53.757682 0.000071 0.000073 0.000071 0.000071 1534896000
16 NaN 56.547317 0.000072 0.000072 0.000070 0.000071 1534914000
17 NaN 52.340624 0.000070 0.000072 0.000070 0.000072 1534932000
18 NaN 42.426811 0.000067 0.000071 0.000067 0.000070 1534950000
19 -inf 41.721667 0.000067 0.000067 0.000065 0.000067 1534968000
20 -inf 41.087686 0.000066 0.000067 0.000066 0.000067 1534986000
21 -inf 42.663976 0.000067 0.000067 0.000066 0.000066 1535004000
22 -inf 46.241512 0.000068 0.000068 0.000066 0.000067 1535022000
23 -inf 47.300220 0.000068 0.000069 0.000067 0.000068 1535040000
24 -inf 47.984947 0.000068 0.000069 0.000067 0.000068 1535058000
25 -inf 47.984947 0.000068 0.000069 0.000067 0.000068 1535076000
26 -inf 50.590822 0.000069 0.000069 0.000068 0.000068 1535094000
27 inf 56.805348 0.000071 0.000071 0.000068 0.000069 1535112000
28 inf 57.658800 0.000071 0.000072 0.000069 0.000071 1535130000
29 inf 63.418810 0.000073 0.000073 0.000070 0.000071 1535148000
这应该在您的主类中执行implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
implementation 'com.google.zxing:core:3.2.1'
方法之前。
添加按钮以启动条形码扫描器:
现在在要启动条形码扫描仪的所需活动处添加按钮。请记住,您的条形码结果将返回到此活动。像这样:
SharedPreferences sharedPreferences;
public static final String mypreference = "mypref";
检索扫描的资产ID并存储在共享首选项中:
点击扫描仪按钮后,您会看到条形码扫描仪已打开,并且可以扫描条形码。扫描结束后,扫描仪会将扫描的资产ID返回给主机活动。现在,您必须捕获资产ID并将其存储在共享的首选项文件中。像这样:
onCreate()
使用共享首选项中存储的值:
现在,您已经从条形码扫描仪接收到资产ID,并将其存储在具有变量名Button barcodeBtn = findViewById(R.id.barcodeBtn);
barcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.setPrompt("Scan the barcode on the asset");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
}
}
的共享首选项文件中。请记住,此值可用于您应用程序中的所有活动。您可以从这样的任何地方检索存储在@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// This is where you are saving the scanned asset ID in the shared preference file.
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("assetID", result.getContents());
editor.apply();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
中的值:
assetID
下次打开条形码扫描仪并扫描另一个条形码时,资产ID中存储的值将被新的资产ID覆盖。
希望这会有所帮助:)