1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Remote Service

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von azzuro, 13.11.2009.

  1. azzuro, 13.11.2009 #1
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Hallo erstmal,
    ich bin neu hier im Forum habe ein Problem mit der Entwicklung von Remote Service.

    Ich möchte den Client und den Service in 2 Projekte auslagern.

    Belasse ich Client und Service in einem Projekt funktioniert alles wie gewollt.

    Trenne ich jetzt den Client vom Service und teile es in 2 Projekte auf, kann ich den Service nicht mehr ansprechen.
    Ich bekomme im log nur die Message das das System den Intent nicht finden kann. Ich Entwickler momentan nur im Emulator.
    Ich Frage mich ob es eine Reihenfolge gibt wie ich deployen muss.
    Ich habe verschiedene Logausgaben eingebaut und habe festgestellt das die onCreate Methode vom Service nicht aufgerufen wird.

    Hier ist das Manifest vom Service
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="de.gps.service" android:versionCode="1" android:versionName="1.0">
        <application android:enabled="true">
            <service android:name=".GpsService" android:label="GpsService"
                android:exported="true" android:process=":remote" android:enabled="true">
                <intent-filter>
                    <action android:name="de.gps.service.IGpsService" />
                </intent-filter>
            </service>
    
            <uses-sdk android:minSdkVersion="4" />
        </application>
        
        
    </manifest> 
    Und hier das von der Aktivity

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="de.gps.service" android:versionCode="1" android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainActivity" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
    
                </intent-filter>
            </activity>
    </application>
        <uses-sdk android:minSdkVersion="4" />
    </manifest>
    
     
    Zuletzt bearbeitet: 13.11.2009
  2. ko5tik, 13.11.2009 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Der Gott Google sagt:
    Code:
    Therefore, activities that are willing to receive implicit intents must  include "android.intent.category.DEFAULT" in their intent filters.
    
    ( gilt AFAIK auch für services )

    Und den Service würde ich auch von der Activity-Manifest entfernen
     
  3. azzuro, 13.11.2009 #3
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Erstmal danke für die Atwort, nur leider hat es zu keinem Erfolg geführt.
    Es bleibt immernoch dabei das ich beim Versuch den Service zu binden
    11-13 14:09:05.180: WARN/ActivityManager(592): Unable to start service Intent { act=de.gps.service.IGpsService }: not found

    Ich bin dankbar für jede weitere Idee
     
  4. ko5tik, 13.11.2009 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    API-Samples haben Paar Services. Versuch mal dort die Anregungen zu finden.
     
  5. azzuro, 13.11.2009 #5
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Ich habe mir die Beispiel schon angeschaut,aber da ist es ja so das Service und Client sich ein Manifest teilen.

    Diese Variante habe ich auch probiert und funktioniert.

    Nur da ich einen Service anbieten will der von verschiedene Clients verwendet werden soll "muss" es bei mir anders sein.
    Mein Service soll keine Abhängigkeit zu einer bestimmten Activity haben.

    Ich denke das das Probleme darin liegt, das das System den Service nicht "findet" Ich mache bestimmt bei der Registrierung des Intents einen fehler. Aber weiß nicht welchen....
     
  6. ko5tik, 13.11.2009 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Hast du auch SoftKeyboard angesehen?

    IMHO - genau das was du brauchst
     
  7. azzuro, 13.11.2009 #7
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Ich habe es mir angeschaut, aber es handlet sich nicht um ein remote Service.
    Ich kling schon so als würde ich alle deine Ideen ablehnen, aber ich habe schon einige Zeit mit dem Problem verbracht und es nervt langsam.

    Weiß du welches Beispiel das Soft Keyboard verwendet ??
     
  8. ko5tik, 13.11.2009 #8
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Poste mal Java-Code, wie du es aufrufst.
     
  9. azzuro, 13.11.2009 #9
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Hier ist der Code vom Client
    Code:
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Log.i(TAG, "onCreate() startet ");
            Button bindBtn = (Button) findViewById(R.id.bindBtn);
            bindBtn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View view) {
                    bindService(new Intent(IGpsService.class.getName()), serConn,
                            Context.BIND_AUTO_CREATE);
                }
            });
    
            Button unbindBtn = (Button) findViewById(R.id.unbindBtn);
            unbindBtn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    unbindService(serConn);
                }
            });
    
        }
    
     
  10. Memex, 14.11.2009 #10
    Memex

    Memex Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    12.11.2009
    Hallo,
    kann sein, dass du einen Punkt zuviel hast:

    Code:
     <service android:name="[COLOR=Red].GpsService[/COLOR]" android:label="GpsService"
    
    Ich mein den Punkt vor GpsService. Wenns nciht klappt sorry für den dummen Kommentar^^ ;)

    lg Memex
     
  11. azzuro, 16.11.2009 #11
    azzuro

    azzuro Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    13.11.2009
    Erstmal danke für deinen "(dummen)" ;) Kommentar.
    Hatte ich auch schon probiert führte aber zu keinem Erfolg.
    Vielleicht habe ich auch einen Konzeptfehler oder einen Knoten in meinen Gehirnwindungen. Vielleicht könnte ja jemand, der sich besser damit auskennt, mal ein kleines Projekt erstellen und mir sagen ob er es zum Laufen bekommt.
    Ich weiß momentan einfach auch nicht mehr weiter.

    *Grübel*

    Ach bevor ich es vergesse, wenn ich mir die Prozesse auf dem Android anschaue, wird mir mein Service auch angezeigt, in der Prozessliste.
     
    Zuletzt bearbeitet: 16.11.2009

Diese Seite empfehlen