Sicherlich schwer machbar, da die meisten Tabelts einen "Hardware" ein/aus schalter haben.
Strom weg = Tablet aus
Strom da = Tablet bleibt aus,
Beiträge von killphil75
-
-
Du kannst ja beliebige Intents aufrufen und alle diesen Intents kannst du mit putExtra auch was mitgeben.
Das funktioniert innerhalb von Android super. (ist ja so eine Art Kommandoübergabe)
Du willst aber Daten von aussen übergeben.Entweder definierst du in deinem Programm --> ein Standardaktion für diesen Typ von Dateien -> Dann bekommt der User falls es Möglichkeiten gibt einen Auswahldialog und kann die Daten Datei mit deinem Prog öffnen. (siehe AuswahlDialog bei mehreren installierten Videoplayern)
In deinem Fall ist ja eher die Frage, wo landet die Datei vom Nutzer ? Wo lädt er die hin ???
Den Ort würde ich prüfen / überwachen und dann hast du ja die Möglichkeit zu schauen was der neuste Eintrag/die neuste Datei ist . -
Klingt für mich eigentlich eher nach einem Contextproblem,
obendrein definierst du deinen Textview 2xeinmal Lokal (in run) und einmal Global, muss also schief gehen.
Codeprivate Runnable updateUI = new Runnable(){ public void run(){ final TextView myTextView = (TextView)findViewById(R.id.myView); myTextView.setText("updateUI called"); // ################# BREAKPOINT ############### } };
Das findeView funktioniert ja nur im Hauptthread weil es ja eigentlich
this.find ... blabla heisst
Wenn du deinen Textview mal Global in deiner Klasse definierst und dann mal
den Zugriff darauf testest sollte es gehen. -
Hmm hat dein Android Gerät einen LINE-IN Eingang ????
Die meisten Geräte haben doch nur Ausgänge -> Headphones
oder Tablets zb. HDMi im Bildbereich, aber ein Eingang ist mir noch nicht über den Weg gelaufen.phil
-
-
Wenn die Datenbank lokal ist, dann läuft sie ja auf einem Datenbank Server , ob der nun im Netz hängt oder nicht ist ja egal.
Sprich: der MYSQL Server hat auch eine IP und kann angesprochen werden,
wenn du jetzt noch einen lokalen Webserver hast, kannst du dir per PHP ein paar Skripte basteln, welche den Zugriff auf die MYSQL Datenbank koordinieren.
phil
-
Hallo,
die Frage ist, wie befüllst du den Listview mit Daten ? Sicher mit einem Adapter und der liefert ja meistens eine ID mit.
Wenn du jetzt deinen Listview mit einem ClickListener alaausgestattet hast, dann kommst du ja über position super an die Einträge deines Adapters.
Code
Alles anzeigen@Override protected void onListItemClick(ListView l, View v, int position, long id) { // URL des angeklickten Items vom Adapter holen und die Url in neuer Activity öffnen super.onListItemClick(l, v, position, id); Spieltag sp = spieltage.get(position); // mein Adapter Intent myIntent = new Intent(v.getContext(), DetailView.class); myIntent.putExtra("url", Uri.decode(sp.getUrl())); startActivityForResult(myIntent,0);
Ich übergebe hier eine URL an eine neue Activity - in deinem Fall könntest du die ID des Datensatzes übergeben.
Und in der 2ten activity holst du dir die Daten einfach wieder per.Wie gesagt, interessant ist die Frage wie du die Daten momentan in deinen Listview bekommst StringAdapter,CursorAdapter oder was selbergeschriebenes ect. dannach würde ich entscheiden welche Daten du hin und her schiebst.
der phil
-
um wie wäre es mit einem 2ten Array und identischem Index ???
pseudocode nur mal für das schema
array Klassen = {"bla1","bla2"}
array Klassename = {"bla1.class","bla2.class"}protected void onListItemClick(ListView l, View v, int position, long id)
{ String item = (String) getListAdapter().getItem(position); Toast.makeText(this, item + " gewählt", Toast.LENGTH_SHORT).show();Da der Itemlistener aus dem selben Array gebaut wurde kannst du ja per "position" abfragen welcher eintrag gewählt wurde.
meinKlassenname = KlassenName[position];
Musst jetzt nur mal schauen wegen dem Typecasting.
-
Aha ah ah, kleiner Denkfehler
du weisst doch das du immer 2 Spinner hast.
Ich würde für beide einen Adapter erschaffen - der erste Spinner ist fix und kann gleich mit Daten gefüllt werden.
Den 2ten befüllst du in deinen Listener, das ist ok so.Momentan erschaffst du bei jedem Wechel einen neuen Adapter. Das brauchst du nicht.
Einfach nur die Daten des Adapters ändern und notifyDataSetChanged() aufrufen.Unten die Variante,welche ich gepostet hatte war ja unoptimiert und nur ein Beispiel:
ArrayAdapter<String> unteradapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, spinner_items_u1); unteradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(unteradapter);besser wäre es, den ganzen quatsch im onCreate mit reinzupacken.
und in deinem Listener die
spinner_items_u1 = neue Werte zu setzen;
spinner.notifyDataSetChanged();aufrufen, und schon hast du die neuen Werte.
-
Vor ein paar Tagen hatten wir hier schon mal die Frage, wie man das Ding ausschaltet. Wenn du wirklich mal eine Fullscreen App, zb als Kiosk-System (sprich Präsentationsmoitor) brauchst dann macht das Sinn.
Wenn du für 2.1 programmierst (genau wie ich), dann hätte ich kurz mal eine Frage, wie stellt er die "alten" Apps auf deinem 3.2 Tablet dar.
Meine App ist immer im Portrait-Mode (halt wie ein Handy), wie läuft das bei Honeycomb - macht der ein Fenster auf oder stretched er das Fullscreen ???lg der phil
-
Hmm ich habe unten rechts keine Statusbar,
du hast doch bestimmt ein Tablet mit HoneyComb oder ICS, mach mal ein Screenshot, damit man weiss wo unten rechts ist bzw wie es aussieht.
Die einzige Info die ich gefunden habe war
ZitatApps cannot add icons in the system bar. The menu icon shows up for old apps (apps that don't target API level 11 and up.)
lg
der phil -
Na dann ist Boot Complete der richtige Weg für dich ...
-
Du musst jetzt nur noch automatisch definieren.....
Sprich wenn du deine App nach dem "BootUp" starten willst, erreichts du dies zum Beispiel mit einem BroadcastReceiver.
-
So, hab gesehen, das hier noch keiner geantwortet hat. Fall es jemanden interresiert ich habe das mittlerweile über SQLite mit der "UNIQUE" Klausel gelöst.
-
http://developer.android.com/r…rd/platform-versions.html
Das ist die Statistik der letzten 14-Tage welche immer mal aktualisiert wird.
Tja und um möglichst viele Kunden zu erreichen, würde ich es halt auf den kleinsten gemeinsamen Nenner runterbrechen, sprich 2.1 also API 7.Laut dieser Statistik würde man dann ca 94% der Geräte erreichen.
Wenn sich das im Verlauf des Jahres rapide ändern wird kann man die App API ja immer noch hochschrauben.
Wobei ich denke das die meisten in einem halben Jahr eh immer noch 2.3.x einsetzen. Honeycomb gibt es für ein paar Tablets und ICS soll zwar bei vielen Geräten nachgerüstet werden, doch viele Hersteller winken schon ab, wegen der angeblich höheren Hardwareforderungen.Ich selber benutze z.B. ein Samsung Galaxy i9000 und ärgere mich über die teilweise unklaren Aussagen Samsungs bezüglich der Updatepolitik.
-
Android bietet für soetwas zb Services und Broadcastreceiver an.
-
Na wenn du auf PC Seite auch mit SQLite arbeiten willst, dann kannst du ja die Datenbanken 1:1 verwenden.
Android bringt ja von Hause die Möglichkeit zur Nutzung von SQLite Datenbanken mit.Dann wäre dein "synchronisieren" ein einfacher Kopierprozess.
-
Zitat
ich habs jetzt hinbekommen, dass die daten in preferences gespeichert werden. allerdings als string.
Wieso als String, du kannst doch einfach die Positionen deiner Spinner speichern und wieder setzen.In meinem Listener siehst du ja wie ich an die Position des Spinners komme,
CodeString auswahl = parent.getItemAtPosition(pos).toString(); if (auswahl.equalsIgnoreCase("Zeile1")) {
Um den Quatsch nur als Int zu haben, brauche ich ja nur "pos" aus der Funktionsübergabe zu speichern, das ist ja ein Int.
Und SHaredprefs kann auch int speichern bzw. lesen
CodeSharedPreferences p = context.getSharedPreferences("SpinnerPrefs", MODE_WORLD_READABLE); meinePos = p.getInt("spinner_kader", 0);
bzw. analog dazu
Hmm mit dem Createresource kann ich mir gerade nicht zusammenreihmen, weil ob du das als string definierts oder die Resource nimmst ist eigentlich fast dasselbe. Zeigt doch mal den Code, bzw den Fehler den er wirft, dann lässt sich das besser eingrenzen.
der phil
-
Hallo Wax,,
hmm interessant wäre zu wissen, um was für Daten es sich handelt.
Wo werden diese am PC vorgehalten, nutzen andere Programme am PC ebenfalls diese Daten ???
Stehen diese Daten in einer Datenbank ???Es ist in 98% Prozent unsinnig ein eigenes Protokoll zu entwickeln das es Standardprotokolle wir HTTP, FTP für solchen Quatsch gibt.
Um per USB zu kommunizieren müsstest du ja auf dem PC ebenfalls einen Service laufen haben, der deine Daten provided. Keine Ahnung wie sehr du in USB Treiberprogrammierung fit bist, klingt aber auch wieder nach einer Bastellösung.
Ich würde mir sicherlich (abhängig von der Art der Daten) einen Webserver (Apache) auf den PC knallen und darüber alles lösen,
eventl. Schnittstellen für Datenbanken, lassen sich ja per php erstellen.Wie gesagt alles unter Vorbehalt, es kommt ja auf die Art der Daten an...
-
Hmm etwas mehr Code, darf es schon sein...
Zitatjava.net.SicketException
Ich hoffe jetzt mal das ist ein Schreibfehler.
Ansonsten der Fehler sagt nur: der SNTP Client hat aufgegeben und den Request abgebrochen weil du versuchst auf etwas zuzugreifen, was vom Protokoll nicht unterstüzt wird.
Ohne Code weiss man aber nicht was du da versuchst.phil