Ja da war ein Adapter dabei, den ich mal einem Freund geliehen hatte... Diesen Adapter habe ich leider nie wieder gesehen
Werde das morgen mal mit dem Honor 10 testen und berichten...
Gn8 für heute
Ja da war ein Adapter dabei, den ich mal einem Freund geliehen hatte... Diesen Adapter habe ich leider nie wieder gesehen
Werde das morgen mal mit dem Honor 10 testen und berichten...
Gn8 für heute
Das mit dem USB Stick habe ich vielleicht unnötig mit reingebracht. das war Anfangs nur zum testen ob ich über USB überhaupt Geräte erkennen kann. Mein problem war, dass mir von einem Kollegen zunächst ein paar komische Kabel gegeben wurde und bei diesen nur das otg y kabel mit normalem usb anschluss funktioniert hatte. Die anderen habe ich erst später selber bestellt um dann zu testen.
Mittlerweile kriege ich in den anderen Apps eben auch das serielle Gerät angezeigt, allerdings weiß ich nicht wie diese Apps das machen. Habe keine Ahnung von SAF, sollte mich da vielleicht reinlesen... Kann man mit SAF nur auf Storages zugreifen oder kriege ich damit auch streamdaten rein ?
Aber kann es sein, dass diese Apps mit dem SAF zwar den Sensor erkennen, aber nix damit anfangen können? Jegliche Serial Terminal Apps erkennen auch kein Gerät am Tablet.
Das wäre der Sensor (DIMF Compact https://www.bopp-reuther.de/pr…konzentrationsmessgeraet/
Mit meinem S4 funktionieren die Testprogramme der Library (https://github.com/felHR85/UsbSerial) und ich kriege Daten rein. Mit meiner App auch. An meinem Laptop kriege ich mit den d2xx Treiber und HTerm(serial tool) auch Daten rein. Lediglich mit dem Testgerät funktioniert nichts. Hier sagt mir die USB OTG Checker App jedoch auch, dass OTG nicht enabled sei.
Ich kriege morgen Nachmittag Besuch von einem Kollegen mit dem Honor 10, welches glücklicherweise Micro USB hat und OTG laut App enabled ist.
Mein S8 hat leider USB-C und dafür hab ich kein passendes rs232 Kabel.
Bin ein ziemlicher Anfänger, sorry :<
Der Code den ich eingebunden hatte, war nur um zu Testen, ob ich das Gerät überhaupt erkennen kann, was leider nicht der Fall ist. Den Code hatte ich irgendwo anders her. Mein eigentlicher Code beinhaltet die Library, welche ich oben mal verlinkt hatte. Und diese funktioniert ja auch über den USB Manager. Wenn ich dich richtig verstanden habe, bringt mir das ja aber nichts, da seit API 23 die Zugriffe nur noch über das SAF erfolgen.
Wie du empfohlen hast, habe ich mal verschiedene Serial Terminal Apps ausprobiert und keine davon "erkennt" das Gerät bzw kann dazu eine Verbindung aufbauen. Für mich heißt das jetzt so viel wie: Mit diesem Gerät wird das NIE funktionieren. Über das SAF werde ich wohl auch keine Daten bekommen, da ich ja nicht wirklich einen Storage habe..?
Übrigens, bei dem genannten Tablet(Decooler Handheld-PDA) sagt jede OTG Checker App, das das Gerät nicht OTG kompatibel ist. Ggf doch eine Lüge vom Hersteller?(Ist ja nur so ein 90€ "China" Ding...)
Daraus schließen sich mir folgende Frage: Liegt es jetzt tatsächlich an API 23 ? Eigentlich doch eher weil die Host API nicht enabled ist oder? (Hab leider aktuell keinen Adapter um das Gerät an meinem S8 zu testen, da sagt mir die OTG Checker App, das OTG enabled ist)
Hey Jogimuc,
ich hoffe du liest das noch
Also soweit läuft momentan alles, jedoch habe ich noch immer Probleme das ganze auf dem oben genannten Gerät zum laufen zu kriegen. Ich habe auch schon ein anderes Kabel ausprobiert, jedoch wird mir in aller "checker"-Apps gesagt, dass OTG ggf nicht vollständig läuft.
Lediglich bei einer App (USB Host Controller) werden mir USB-Geräte angezeigt, wenn diese angeschlossen sind. Bei einem USB-Stick kann ich sogar mit dem hauseigenen Datenmanager auf den USB Stick zugreifen. Jedoch finde ich keine Beispiele dafür wie ich das ein einer eigenen App verklichen kann.
Habe ein Codebeispiel gefunden um nach den Permissions zu fragen, und die kriege ich auch, jedoch erkennt er in den Apps einfach keine USB geräte. Für die USB Connection teste ich aktuell mit folgendem Code:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_RUNTIME_PERMISSION = 123;
TextView text;
HashMap<String, UsbDevice> map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (CheckPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// you have permission go ahead
//createApplicationFolder();
Log.d("taggy", "IT WORKS");
} else {
// you do not have permission go request runtime permissions
RequestPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION);
Log.d("taggy", "DOESNT WORK :(");
}
final UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
map = usbManager.getDeviceList();
text = findViewById(R.id.text);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(map == null){
text.setText("0");
} else {
text.setText(map.toString());
for (UsbDevice e : map.values()){
text.append(e.toString());
}
}
//text.setText(map.size());
}
});
}
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
switch (permsRequestCode) {
case REQUEST_RUNTIME_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// you have permission go ahead
//createApplicationFolder();
Log.d("taggy", "IT WORKS");
} else {
// you do not have permission show toast.
}
return;
}
}
}
public void RequestPermission(Activity thisActivity, String Permission, int Code) {
if (ContextCompat.checkSelfPermission(thisActivity,
Permission)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Permission)) {
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Permission},
Code);
}
}
}
public boolean CheckPermission(Context context, String Permission) {
if (ContextCompat.checkSelfPermission(context,
Permission) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
}
Alles anzeigen
In der App "USB Host Controller" werden mir wie gesagt die Geräte angezeigt... in diesem Testprogramm, ist die deviceliste jedoch leer...
Gibt es irgendwo ein Beispiel mit funktionierendem Code diese USB connection? Ich finde leider NICHTS dazu.
Jep. Wtf...
Normalerweise sagt schlägt das IDE ja direkt vor die Klasse zu importieren, wenn sie in irgendeiner vorhandenen library enthalten ist. War allerdings nicht der Fall.
Mein Fail war allerdings, das ich WIE AUCH IMMER eine komplett veraltete Version von der Library mit eingebunden hatte in der es den ProtcollBuffer anscheinend noch nicht gab.
Naja, genug für heute!
Vielen vielen Dank fir jogimuc!
Achso sorry
Ist 5.1.1 API 22, jedoch ging es auch erst nachdem ich den Usb Host mode enabled habe mittels der APP "USB Host Check" (War einfacher als es manuell zu machen)
CyanogenMod 12.1
In der library die ich aktuell benutze wird auf dieser Seite (https://github.com/felHR85/Usb…/wiki/4.-Asynchronous-api) ganz unten erzählt, dass man eine ProtocollBuffer Klasse verwenden kann. Ist vermutlich wieder eine extra library?
Bisher nur das (https://github.com/protocolbuf…tobuf/releases/tag/v3.9.1) gefunden, scheint aber nicht das gleiche zu sein wie das vorher erwähnte... Ich glaube ich sollte mal langsam n Päuschen machen...
Das serielle Geräte ist ein DIMF Compact (https://www.bopp-reuther.de/pr…konzentrationsmessgeraet/) und besitzt einen FTDI Chip. Es hat einen RS232 Anschluss welcher über einen Adapter bei mir im (momentan) S4 per Micro USB angeschlossen ist.
USB Connection läuft mittlerweile.
Momentan arbeite ich mit folgender lib ( https://github.com/felHR85/UsbSerial ) da ich keine Doku bei ftdichip.com gefunden hatte für Android. Aber während ich das hier geschrieben habe, hatte ich die Seite nochmal durchforstet und bin fündig geworden *facepalm*. Werde dann jetzt lieber die lib von ftdichip nehmen und hoffen, dass ich da weiter komme als bisher
EDIT: Die Doku die ich gefunden habe ist leider nicht für Java sondern für C.. Heißt wohl doch Beispielprojekte suchen und durchforsten
EDIT2: Bin wieder bei der ersten library und kriege mittlerweile auch Daten rein... nur etwas unstrukturiert, aber das wird noch
Das Problem mit dem Gerät werde ich dann erst weiter angehen, sobald der erste Prototyp steht. Aber wenn du meinst, dass da was möglich sein sollte, bin ich schonmal guter Dinge.
Vielen Dank, bist mir eine große Hilfe!
Schon mal vielen Dank für deine Antwort. Hatte sämtliche Apps getestet. Ein USB Stick wurde auch erkannt und ich konnte auf die dateien drauf zugreifen mit der App "USB Host Controller". Deswegen hatte ich auch gefühlt einen halben Tag rumgemacht um das zum laufen zu kriegen, jedoch ohne Erfolg.
Dann hatte ich weitere Apps geholt und dort wurde mir von allen gesagt, das nichts erkannt wird. Liegt das auch, da diese die User permission Freigabe nicht eingeholt haben?
USB Host Test:
Could not detect any usb devices. Possible reasons include ... no USB Host Capability on this device
USB Host Check:
(X) android.hardware.usb.host.xml - Not found.
(X) handheld_core_hardware.xml - USB Host not enabled.
(X) tablet_core_hardware.xml - Not found
USB OTG Checker:
Android nicht Kompatibel (noch)
USB OTG
Checkliste
(X) USB Manager
( ) USB HOST
(X) USB Device List
Guten Tag,
ich habe mich nun auch in die Welt der Androidentwicklung verirrt und hätte da gerne ein zwei Fragen an euch, da ich trotz einer Nacht voller Versuche und Recherche einfach nicht weiter komme. Und zwar entwickle ich eine App, bei welcher das Device als USB-Host dient und über USB-OTG Anschluss von einem Messgerät über USBtoSerial Daten geliefert bekommt und ein Ergebnis dann über einen Thermal Printer ausgibt.
Mein Testgerät war in diesem Fall folgendes: https://www.tomtop.com/p-os230…utm_campaign=TT_USC_DE_CD
Klang im ersten Moment alles ganz einfach, jedoch gibt es da ein Problem beim USB. Laut "Hersteller" verfügt das Gerät über USB-OTG Support, welches für mich bedeutete, dass ich mit anderen USB Geräten kommunizieren kann. Dies hat sich jedoch nach meinem jetzigen Wissensstand als Lüge herausgestellt, da in den permissions der Host Mode nicht aktiviert ist. Meine bis dahin entwickelte App hat somit einfach keine USB Geräte erkannt. Nun habe ich aus der Ecke mein altes gerootetes S4 Active ausgepackt und den Host Mode aktiviert und es erkennt schon mal USB Geräte. Der nächste Schritt wird jetzt das Testen des Messgerätes sowie der USBtoSerial Schnittstelle. Wann dann allerdings fehlt ist ein Printer, welcher wieder extern dazu geschalten werden müsste.
Nun meine Frage:
Gibt es Android POS Printer mit werksmäßig aktiviertem USB Host Mode?
Da das Rooten meines S4 schon etwas länger her ist, wollte ich heute zunächst das oben beschriebene Gerät rooten. Wenn ich das jedoch richtig sehe benötigt man fürs rooten eine gerätespezifische Custom-ROM? Oder liege ich da falsch?
Schonmal Vielen Dank für jeden Tipp!
LG ZiPP