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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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>