benj98
Neues Mitglied
- 0
Hallo Zusammen, also kurz mal etwas zu mir:
Ich heiße Benjamin und wohne in Zürich. Ich bin 20 Jahre alt und manchmal übernehme ich mich sehr gerne bei Projekte Mit Modellbau, Kamera und Arduino aufgewachsen mache ich nun eine Elektroniker Lehre.
Erfahrungen habe ich vor allem in der Mikrocontroller Programmierung. Sehr wenig bis keine in Java.
Soviel zu mir.
Nun Zum Projekt: (Was viel interessanter ist )
Es ist eine Aufgabe von einem Wettbewerb bei dem ich mich einfach mal angemeldeten habe Mit Beispielcodes habe ich nun auch die APP erstellen können und kompilieren. Nun stehe ich jedoch beim Logbuch Eintrag fest. Aber zuerst mal langsam von vorne:
Die APP misst die Magnetfeldstärke und detektiert so ein Metallgegenstand in einer Box. Der Wert wird als TextView ausgegeben und mit einer progressBar dargestellt. Soweit so gut.
Mit dieser Funktion bestimme ich erst die Entsprechende "Schatztruhe" mit einem QR-Code drauf. Dieser Scanne ich mit der Activity aus der ZXing Barcode Scanner APP. (com.google.zxing.client.android.SCAN) Danach habe ich der größten Teil des Code kopiert, da ich ein Anfänger bin und so alles schön präsentiert wurde.
Ich muss schlussendlich, das was ich eingescannt habe auf den Server des Veranstalters Speichern. Und zwar in der folgender Form:
Also als String in JSON-Format. Nun ist es für mich nicht mehr ganz klar, wie das umzusetzen ist. Also wie ich die Daten aufarbeite soll.
Nun am besten stelle ich mal den Code hier rein, evtl. kann mir jemanden helfen. Mit der Dokumentation bin ich selbst nicht weiter gekommen, da mein Englisch eingerostet ist und meine Java Erfahrungen... naja
MainActivity
Entsprechend XML
Ich heiße Benjamin und wohne in Zürich. Ich bin 20 Jahre alt und manchmal übernehme ich mich sehr gerne bei Projekte Mit Modellbau, Kamera und Arduino aufgewachsen mache ich nun eine Elektroniker Lehre.
Erfahrungen habe ich vor allem in der Mikrocontroller Programmierung. Sehr wenig bis keine in Java.
Soviel zu mir.
Nun Zum Projekt: (Was viel interessanter ist )
Es ist eine Aufgabe von einem Wettbewerb bei dem ich mich einfach mal angemeldeten habe Mit Beispielcodes habe ich nun auch die APP erstellen können und kompilieren. Nun stehe ich jedoch beim Logbuch Eintrag fest. Aber zuerst mal langsam von vorne:
Die APP misst die Magnetfeldstärke und detektiert so ein Metallgegenstand in einer Box. Der Wert wird als TextView ausgegeben und mit einer progressBar dargestellt. Soweit so gut.
Mit dieser Funktion bestimme ich erst die Entsprechende "Schatztruhe" mit einem QR-Code drauf. Dieser Scanne ich mit der Activity aus der ZXing Barcode Scanner APP. (com.google.zxing.client.android.SCAN) Danach habe ich der größten Teil des Code kopiert, da ich ein Anfänger bin und so alles schön präsentiert wurde.
Ich muss schlussendlich, das was ich eingescannt habe auf den Server des Veranstalters Speichern. Und zwar in der folgender Form:
Code:
{
"task": "Metalldetektor",
"solution": "$Lösungswort"
}
Also als String in JSON-Format. Nun ist es für mich nicht mehr ganz klar, wie das umzusetzen ist. Also wie ich die Daten aufarbeite soll.
Nun am besten stelle ich mal den Code hier rein, evtl. kann mir jemanden helfen. Mit der Dokumentation bin ich selbst nicht weiter gekommen, da mein Englisch eingerostet ist und meine Java Erfahrungen... naja
MainActivity
Code:
package ch.brandt_art.metallv3;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor magnetic_fieldSensor;
private TextView textView;
private ProgressBar progressBar;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView (R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax (15000);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
magnetic_fieldSensor = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).get(0);
}
protected void onResume(){
super.onResume();
sensorManager.registerListener(this,magnetic_fieldSensor,SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause(){
super.onPause();
sensorManager.unregisterListener(this);
}
public void onSensorChanged(SensorEvent event){
float[] mag = event.values;
double abs = Math.sqrt(mag[0]*mag[0]+mag[1]*mag[1]+mag[2]*mag[2]);
if(abs<0)
{
abs=abs*-1;
}
textView.setText(("Magnetstärke: "+ String.format("%.2f", abs) ));
progressBar.setProgress((int) abs* 100);
}
// Logbuch _Eintrag //
//--------------------------------------------------------------------//
private static final int SCAN_QR_CODE_REQUEST_CODE = 0;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem menuItem = menu.add("Log");
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, SCAN_QR_CODE_REQUEST_CODE);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
private void log(String qrCode) {
Intent intent = new Intent("ch.appquest.intent.LOG");
if (getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
Toast.makeText(this, "Logbook App not Installed", Toast.LENGTH_LONG).show();
return;
}
// Achtung, je nach App wird etwas anderes eingetragen
String logmessage = ("task: Metallsetektor, solution: sqrCode");
intent.putExtra("ch.appquest.logmessage", logmessage);
startActivity(intent);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == SCAN_QR_CODE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
String logMsg = intent.getStringExtra("SCAN_RESULT");
// Weiterverarbeitung..
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Entsprechend XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="273dp"
android:layout_height="111dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="73dp"
android:text="Test"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="216dp"
android:layout_height="43dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="230dp" />
</RelativeLayout>