Service Android qui ne démarre pas
Bonjour,
Je suis étudiant en informatique, en stage, et je dois développer une application android qui nécessite d'avoir un service qui tourne en arrière plan pour interroger regulierement une base de donnée distante et créer une notification.
J'ai suivi un tutoriel Android (et d'autres aussi), mais j'ai toujours le même problème, aucun service ne démarre lorsque je clique sur le bouton.
Je travaille sous eclipse avec le plugin google et je lance mon projet dans des périphériques virtuels. j'ai essayé avec toutes les versions d'android de la 2.2 à la 4.1 et j'ai le même problème, est ce que quelqu'un à déjà eu ce problème, pouvez vous m'aider s'il vous plait?
Voici le MainActivity.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button serviceBtn = (Button) findViewById(R.id.serviceBtn);
serviceBtn.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View actuelView)
{
startService(new Intent(MainActivity.this, Notif.class));
}
});
}
} |
Le service Notif.java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| public class Notif extends Service{
private LocationManager locationMgr = null;
private LocationListener onLocationChange = new LocationListener()
{
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
@Override
public void onProviderEnabled(String provider)
{
}
@Override
public void onProviderDisabled(String provider)
{
}
@Override
public void onLocationChanged(Location location)
{
Double latitude = location.getLatitude();
Double longitude = location.getLongitude();
Toast.makeText(getBaseContext(),
"Voici les coordonnées de votre téléphone : " + latitude + " " + longitude,
Toast.LENGTH_LONG).show();
}
};
@Override
public IBinder onBind(Intent arg0)
{
return null;
}
@Override
public void onCreate()
{
locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000,
0, onLocationChange);
locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0,
onLocationChange);
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy()
{
super.onDestroy();
locationMgr.removeUpdates(onLocationChange);
}
} |
Le activity_main.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn1"
android:id="@+id/serviceBtn"
/>
</LinearLayout> |
et le AndroidManifest.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cafenoir.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="org.apache.cordova.DroidGap"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name" >
<intent-filter>
</intent-filter>
</activity>
<service android:name=".com.cafenoir.test.Notif" />
</application>
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.LOCATION" />
</manifest> |