2014-02-09 3 views
0

У меня есть этот класс обслуживанияНачало службы в андроиде

package com.example.test43; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.app.Service; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.location.LocationManager; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class ProximityService extends Service { 

    private String PROX_ALERT_INTENT = "com.example.proximityalert"; 
    private BroadcastReceiver locationReminderReceiver; 
    private LocationManager locationManager; 
    private PendingIntent proximityIntent; 

//@override 
    public void onCreate() { 
     locationReminderReceiver = new ProximityIntentReceiver(); 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     Toast.makeText(this, "created", Toast.LENGTH_LONG).show(); 
     double lat = 55.586568; 
     double lng = 13.0459; 
     float radius = 1000; 
     long expiration = -1; 

     IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
     registerReceiver(locationReminderReceiver, filter); 

     Intent intent = new Intent(PROX_ALERT_INTENT); 

     intent.putExtra("alert", "Test Zone"); 

     proximityIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 

     locationManager.addProximityAlert(lat, lng, radius, expiration, proximityIntent); 

    } 

// @override 
    public void onDestroy() { 
     Toast.makeText(this, "Proximity Service Stopped", Toast.LENGTH_LONG).show(); 
     try { 
      unregisterReceiver(locationReminderReceiver); 
     } catch (IllegalArgumentException e) { 
      Log.d("receiver", e.toString()); 
     } 

    } 

// @override 
    public void onStart(Intent intent, int startid) { 
     Toast.makeText(this, "Proximity Service Started", Toast.LENGTH_LONG).show(); 
    } 

//@override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 



    public class ProximityIntentReceiver extends BroadcastReceiver { 

     private static final int NOTIFICATION_ID = 1000; 

    //@suppressWarnings("deprecation") 
    //@override 
     public void onReceive(Context arg0, Intent arg1) { 

      String place = arg1.getExtras().getString("alert"); 

      NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

      PendingIntent pendingIntent = PendingIntent.getActivity(arg0, 0, arg1, 0); 

      Notification notification = createNotification(); 

      notification.setLatestEventInfo(arg0, "Entering Proximity!", "You are approaching a " + place + " marker.", pendingIntent); 

      notificationManager.notify(NOTIFICATION_ID, notification); 

      locationManager.removeProximityAlert(proximityIntent); 

     } 

     private Notification createNotification() { 
      Notification notification = new Notification(); 

      notification.icon = R.drawable.ic_launcher; 
      notification.when = System.currentTimeMillis(); 

      notification.flags |= Notification.FLAG_AUTO_CANCEL; 
      notification.flags |= Notification.FLAG_SHOW_LIGHTS; 

      notification.defaults |= Notification.DEFAULT_VIBRATE; 
      notification.defaults |= Notification.DEFAULT_SOUND; 

      return notification; 
     } 

    } 
} 

Здесь проявляется:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.test43" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="18" /> 


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <service android:enabled="true" android:name="com.example.ProximityService" /> 
     <activity 
      android:name="com.example.test43.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> 

</manifest> 

Главной

package com.example.test43; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     startService(new Intent(this, ProximityService.class)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Я хочу знать, как я могу запустить службу? Я поставил тост в on-create, когда сервис начинает только знать, когда запускается, но я его не вижу. Я здесь что-то не так?

Любая помощь будет оценена

+0

вы объявили о своей службе в ** AndroidManifest.xml **? – waqaslam

+0

имена пакетов разные com.example.ProximityService com.example.test43.MainActivity это нормально, у вас есть два пакета? –

+0

Вам следует воздержаться от использования имени пакета «com.example». –

ответ

0

Ваше имя пакета неверен при определении сервиса. Изменение вы Service заявления в AndroidManifest.xml, как показано ниже:

<service android:enabled="true" 
     android:name="com.example.test43.ProximityService" /> 
+0

Плотина, нет комментариев ха-ха ... – user3022474

Смежные вопросы