main.xml: 
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView
 8         android:layout_width="fill_parent"
 9         android:layout_height="wrap_content"
10         android:text="@string/hello" />
11 
12     <Button
13         android:id="@+id/locationButtonId"
14         android:layout_width="fill_parent"
15         android:layout_height="wrap_content"
16         android:text="@string/location" />
17 
18     <Button
19         android:id="@+id/bestProviderButtonId"
20         android:layout_width="fill_parent"
21         android:layout_height="wrap_content"
22         android:text="@string/bestProvider" />
23 
24 </LinearLayout>


strings.xml: 1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 
4     <string name="hello">Hello World, MainActivity!</string>
5     <string name="app_name">05_location02</string>
6     <string name="location">测试当前设备的provider</string>
7     <string name="bestProvider">最好的Provider</string>
8 
9 </resources>

AndroidManifest.xml: 
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="gaolei.location02"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk android:minSdkVersion="8" />
 8 
 9     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
10     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
11 
12     <application
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name" >
15         <activity
16             android:name=".MainActivity"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20 
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24     </application>
25 
26 </manifest>
MainActivity.java: 
 1 package gaolei.location02;
 2 
 3 import java.util.Iterator;
 4 import java.util.List;
 5 
 6 import android.app.Activity;
 7 import android.content.Context;
 8 import android.location.Criteria;
 9 import android.location.LocationManager;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 
15 public class MainActivity extends Activity {
16     private Button locationButton;
17     private Button bestProviderButton;
18     private LocationManager locationManager;
19 
20     @Override
21     public void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.main);
24 
25         locationButton = (Button) findViewById(R.id.locationButtonId);
26         bestProviderButton = (Button) findViewById(R.id.bestProviderButtonId);
27 
28         locationManager = (LocationManager) MainActivity.this
29                 .getSystemService(Context.LOCATION_SERVICE);
30         locationButton.setOnClickListener(new ProvidersButtonListener());
31         bestProviderButton.setOnClickListener(new BestProviderButtonListener());
32     }
33 
34     private class ProvidersButtonListener implements OnClickListener {
35 
36         @Override
37         public void onClick(View v) {
38             List<String> providers = locationManager.getAllProviders();
39             for (Iterator iterator = providers.iterator(); iterator.hasNext();) {
40                 String provider = (String) iterator.next();
41                 System.out.println(provider);
42             }
43 
44         }
45 
46     }
47 
48     private class BestProviderButtonListener implements OnClickListener {
49 
50         @Override
51         public void onClick(View v) {
52             // 声明一个Criteria对象
53             Criteria criteria = new Criteria();
54             // 设置查询条件
55             criteria.setAccuracy(Criteria.ACCURACY_FINE);
56             criteria.setPowerRequirement(Criteria.POWER_LOW);
57             criteria.setAltitudeRequired(false);
58             criteria.setSpeedRequired(false);
59             criteria.setCostAllowed(false);
60             String provider = locationManager.getBestProvider(criteria, false);
61             System.out.println("best provider ----->" + provider);
62 
63         }
64 
65     }
66 }