TCP C# / WearApp und dann kam Tizen

D

DevDroid

Neues Mitglied
0
Erstmal Hallo zusammen,

ich arbeite gerade an einem Projekt und drehe mich nun leider seit zwei Tagen im Kreis.

Worum geht’s:
Ich möchte über eine SmartWatch ein Windows Programm steuern.

Aktueller Stand:
  • Windows Programm ist fertig und läuft (VS2015 C#)
  • Android Handy App ist fertig und läuft (AndroidStudio2.2 mit Emu und auf Device Note3 getestet)
  • Die Verbindung zu meinem C# Tool baue ich über einen TCP Socket auf
  • Die Geräte sind über ein WLAN AP miteinander verbunden
  • Ich kann von beiden Teilnehmern eigene „String Kommandos“ schicken und etwas tun
  • Alles funktioniert. Soweit so gut…………..
Ich hab zunächst mit Android Studio einen Check machen wollen, um zu sehen ob es technisch überhaupt funktioniert. Daher ist zunächst die Handy App entstanden. Wenn alles funzt, wollte ich das Ganze für die Android SmartWatch ummodeln.

Dann kam mein Problem:

Die SmartWatch die ich zur Verfügung gestellt bekommen habe ist eine Gear S2 :-( und hat leider kein Android Wear OS. Tizen versteckt sich hinter der Scheibe…..Danke.....

Also habe ich mich mit Tizen auseinandergesetzt. Zum Glück hab ich vor Jahren schon einmal Embedded Systeme erstelle und hab so auch ein bisschen C Erfahrung. Leider ist dieses Taizen (Studio + Dev. Konzept) der letzte Schei…… Sorry…..

Nun komm ich nicht weiter und hoffe hier kann mir jemand einen Tipp geben. Ich arbeite an drei Lösungskonzepten (Wo ich jetzt auch schon wirklich eine Menge gegoogelt habe!!!)

  1. Auf die Watch muss irgendwie ein Android Wear OS. Da gibt es schon eine Konzepte aus anderen Foren (Darf ich die Links hier Posten?)
  2. Die Tizen Apps in einem anderen SDK zu erstellen (Geht wohl auch mit Eclipse)
  3. Mich doch weiter mit dem Tizen Studio befassen
Option 3 möchte ich vermeiden, weil dieses SDK einfach Mega verbugt ist. Echt eine Zumutung und zusätzlich findet man kaum brauchbare Tutorials. Auch auf der Tizen Dev Seite nicht!!! Außerdem habe ich schon drei Tage daran verschwendet um Xamarin im VS ans laufen zu bekommen.

Jetzt hab ich schon mit 5 SDKs gespielt und hoffe hier hat jemand vielleicht ein simple Lösung.

Gruß
DevDroid
 
Hallo Dev :)

Genau an dem Punkt bin ich auch gegen die Wand gelaufen .. :)

Ich habe dann schlussendlich das Tizen Ding in der Bucht vertickert und mir dann dort eine gebrauchte Moto 360 besorgt
Die erste Generation reicht völlig fürs Coden aus

Letztendlich habe ich dann ein paar eus drauf gezahlt , aber wenn du dagegen den Frust & Zeit beim Coden berücksichtigst -
eher erträglich :)

Viel Erfolg

Stefan
 
@swa00

Danke für die Info und sorry für die späte Antwort. Ich hab die Uhr nun auch an den Nagel gehängt und mir eine S0ny SmartWatch 3 besorgt (Inkl. WiFi und AndroidWear) und tataaa es geht vorwärts. Die App hab ich nun im Android Studio vervollständigt und auf die Uhr gebracht (Läuft :thumbsup:)

Aber hat evtl. jemand eine Idee, wie ich bei der Uhr für WiFi eine Statische IP Adresse einstellen kann? Ich versuche mich über den WLan AP direkt mit meinem Laptop zu verbinden. Wenn ich das mit meinem SmartPhone mache, kann ich bei der Wlan Key Abfrage unter „Erweiterte Einstellungen“ DHCP/IP einstellen.

Wenn ich das mit der Uhr Versuche, kann ich nur den Key eingeben. Zusätzliche Einstellmöglichkeiten gibt es an dieser Stelle Irgendwie nicht....

Hat jemand eine Idee????

Gruß

Dev
 
Hallo Dev ,

habe ich auch schon auf meiner Moto gesucht - geht unter Wear kleiner 2.0 (6.0.1) derzeit nicht.
Ich hoffe mal , dass das bei 2.0 machbar ist .
Die ersten Images sind ja schon draussen ("Hufe scharrender weise")

Ich habe es aber an meiner Fritzbox gelöst , indem ich der MAC der Uhr via DHCP immer die gleiche IP zuweise.
 
Zuletzt bearbeitet:
Hy,

gute Idee. Kann ich leider erst zuhause Testen, weil ich hier gerade keinen WLan Router sondern nur ein AP zur Hand habe.
Ich kann heute Abend hoffentlich ein Feedback posten.

Wear2.0 wäre natürlich jetzt eine super Lösung gewesen. Hab aber leider gerade gelesen dass wir erst Anfang 2017 damit rechnen dürfen. Außerdem
gibt es wohl schon eine Liste mit Devices die kein Update bekommen (".....Unter anderem Lenovos Moto 360 und das erste G-Watch-Modell von LG werden kein Update erhalten.....")
 
Hmmm.. ich hoffe für uns tut sich da auch bald was.

Aber ich gebe gerade noch nicht auf und hab folgendes Entdeckt:

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>

final ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WIFI_USE_STATIC_IP, 1);
Settings.System.putString(cr, Settings.System.WIFI_STATIC_IP, "Meine IP");

Kann ich der Watch die Einstellungen durch meine App (Mit Usererlaubnis) aufzwingen? Oder funktioniert das technisch nicht. (Bin gerade am grübeln ob ich mir die Mühe mache soll das ACTION_MANAGE_WRITE_SETTINGS Activity einzubinden und das zu testen)
 
Kann ich dir leider so nicht beantworten .....

Wenn du 6.x drauf hast , definitv nicht .....

Kostet ja nichts es mal drauf zu donnern - für eine Info wär ich dir dankbar :)
 
Zuletzt bearbeitet:
Hi,

kurzes Feedback zu „android.permission.WRITE_SETTINGS“. War leider nix mit "mal eben" :crying:

App Versuch 1
In OnCreate
final ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WIFI_USE_STATIC_IP, 1);
Settings.System.putString(cr, Settings.System.WIFI_STATIC_IP, "192.168.2.20");


in AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_SETTINGS" />


Ergebnis:
Fatal Exception:
„……was not granted this permission: android.permission.WRITE_SETTINGS……“

Ursache:
System Permissions | Android Developers
„….If an app declares that it needs a dangerous permission, the user has to explicitly grant the permission to the app……“

Lösung:
Methode "requestPermissions" (Angeblich ein fertiges Activity) und das Event "onRequestPermissionsResult" (Wird von der Methode gefeuert)

App Versuch 2
import android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback;
import android.support.v4.app.ActivityCompat;

final private int REQUEST_CODE_ASK_SINGLE_PERMISSION = 123;

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setAmbientEnabled();

//ActivityCompat | Android Developers, java.lang.String[], int)
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_SETTINGS}, REQUEST_CODE_ASK_SINGLE_PERMISSION);
}

@override
//Callback for the result from requesting permissions.
//ActivityCompat.OnRequestPermissionsResultCallback | Android Developers
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_SINGLE_PERMISSION:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
final ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WIFI_USE_STATIC_IP, 1);
Settings.System.putString(cr, Settings.System.WIFI_STATIC_IP, "192.168.2.20");
} else {
// Permission Denied
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

Ergebnis:
App startet auf der Uhr. Aber das Activity der "RequestPermissions" Methode wird nicht aufgerufen :blink:

Aber in der Beschreibung steht doch:
"....This method may start an activity allowing the user to choose which permissions to grant and which to reject. Hence, you should be prepared that your activity may be paused and resumed......."

Was mache ich falsch:confused2:
 
Hallo Dev,

das hatte ich ja schon oben vermutet ... :-(

hast du 6.01 auf der Uhr ??
Dann müsstest du ja dort , genau so wie auf einem Smartphone, als USER die Permission vergeben
und das ist bei der Uhr nicht möglich ..

Ich könnte mir vorstellen , dass du die Uhr rootest ( irgendwo habe ich mal was gesehen )
und dann ein su shell absetzt
 
Also laut Android Dev muss das gehen. Wird dort auch gezeigt (Version ab 6.0)
Requesting Permissions on Android Wear | Android Developers

Jep auf meiner Uhr ist 6.0.1

Ich glaube ich kauf einfach für 15€uronen einen WLan Router und mache das so wie mit deiner FritzBox. :biggrin:
Obwohl mich dass so nicht glücklich macht...
 
Also laut Android Dev muss das gehen. Wird dort auch gezeigt (Version ab 6.0)

Ich gebe dir recht , da steht es eindeutig .....
Vielleicht musst du deine app komplett entfernen und dann nochmal synchronisieren , damit die Uhr erkennt , dass da jemand was neues benötigt

P.S bei deinem Router solltest du jedoch acht geben , das du MAC adressen einer eindeutigen DHCP IP zuordnen kannst .
Das machen schon lange nicht alle - und bei 15 Eus wage ich es zu bezweifeln :)
 
Ich bin einen Schritt weiter. In Projekt structure/app Compile Sdk + Min + Target SDK Version hab ich alles auf API23 gestellt.
Es kommt zwar das entsprechende Activity vom Request noch nicht, aber das Callback wird aufgerufen. Bekomme aktuell
aber immer nur "Denied" zurück.

Stück für stück

PS: Die 15€ waren absichtlich Untertrieben. Aber egal wie Teuer es wäre, es hätte mir eine Menge graue Haare und Kopfschmerzen erspart.
(Und das weil ich bei einer SmartWatch eine IP einstellen will :cursing:)
 
Dann zack zack - auf in den MM :)
 

Ähnliche Themen

Laser5001
Antworten
3
Aufrufe
630
swa00
swa00
M
  • maksimilian
Antworten
4
Aufrufe
1.200
jogimuc
J
P
Antworten
5
Aufrufe
3.685
MisterRoboto
MisterRoboto
Zurück
Oben Unten