私はAndroid開発を開始し、 https://developers.google.com/maps/documentation/android/intro#sample_codeのサンプルコードを使用してGoogleマップにアクセスしました。私はこのサイトのすべての手順を自分の側から変更せずに実行しました。実行すると、エミュレーターに次のメッセージが表示されます。残念ながら、GoogleMapsAPIは停止しました。
これが私のマニフェストです
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapdemo"
android:versionCode="2"
android:versionName="2.1.0">
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
<!-- Copied from Google Maps Library/AndroidManifest.xml. -->
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission >android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- External storage for caching. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- My Location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<!-- End of copy. -->
<application
android:icon="@drawable/ic_launcher"
android:label="@string/demo_title"
android:hardwareAccelerated="true">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDYj6PVzqEyVw5ZItRp-PKrVEIb8woTdVc"/>
<activity android:name="com.example.mapdemo.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps"/>
<activity
android:name=".BasicMapActivity"
android:label="@string/basic_map"/>
<activity
android:name=".CameraDemoActivity"
android:label="@string/camera_demo"/>
<activity
android:name=".CircleDemoActivity"
android:label="@string/circle_demo"/>
<activity
android:name=".EventsDemoActivity"
android:label="@string/events_demo"/>
<activity
android:name=".GroundOverlayDemoActivity"
android:label="@string/groundoverlay_demo"/>
<activity
android:name=".LayersDemoActivity"
android:label="@string/layers_demo"/>
<activity
android:name=".LocationSourceDemoActivity"
android:label="@string/locationsource_demo"/>
<activity
android:name=".MarkerDemoActivity"
android:label="@string/marker_demo"/>
<activity
android:name=".OptionsDemoActivity"
android:label="@string/options_demo"/>
<activity
android:name=".PolygonDemoActivity"
android:label="@string/polygon_demo"/>
<activity
android:name=".PolylineDemoActivity"
android:label="@string/polyline_demo"/>
<activity
android:name=".ProgrammaticDemoActivity"
android:label="@string/programmatic_demo"/>
<activity
android:name=".TileOverlayDemoActivity"
android:label="@string/tile_overlay_demo"/>
<activity
android:name=".UiSettingsDemoActivity"
android:label="@string/uisettings_demo"/>
<activity
android:name=".RawMapViewDemoActivity"
android:label="@string/raw_mapview_demo"/>
<activity
android:name=".RetainMapActivity"
android:label="@string/retain_map"/>
<activity
android:name=".MultiMapDemoActivity"
android:label="@string/multi_map_demo"/>
</application>
</manifest>
そしてここにmain.java
ファイルがあります:
package com.example.mapdemo;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import com.example.mapdemo.view.FeatureView;
import android.app.Activity;
public final class MainActivity extends ListActivity {
private static class DemoDetails {
private final int titleId;
private final int descriptionId;
private final Class<? extends FragmentActivity> activityClass;
public DemoDetails(
int titleId, int descriptionId, Class<? extends FragmentActivity> >activityClass) {
super();
this.titleId = titleId;
this.descriptionId = descriptionId;
this.activityClass = activityClass;
}
}
private static class CustomArrayAdapter extends ArrayAdapter<DemoDetails> {
public CustomArrayAdapter(Context context, DemoDetails[] demos) {
super(context, R.layout.feature, R.id.title, demos);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FeatureView featureView;
if (convertView instanceof FeatureView) {
featureView = (FeatureView) convertView;
} else {
featureView = new FeatureView(getContext());
}
DemoDetails demo = getItem(position);
featureView.setTitleId(demo.titleId);
featureView.setDescriptionId(demo.descriptionId);
return featureView;
}
}
private static final DemoDetails[] demos = {
new DemoDetails(
R.string.basic_map, R.string.basic_description, BasicMapActivity.class),
new DemoDetails(R.string.camera_demo, R.string.camera_description,
CameraDemoActivity.class),
new DemoDetails(R.string.events_demo, R.string.events_description,
EventsDemoActivity.class),
new DemoDetails(R.string.layers_demo, R.string.layers_description,
LayersDemoActivity.class),
new DemoDetails(
R.string.locationsource_demo, R.string.locationsource_description,
LocationSourceDemoActivity.class),
new DemoDetails(R.string.uisettings_demo, R.string.uisettings_description,
UiSettingsDemoActivity.class),
new DemoDetails(R.string.groundoverlay_demo, >R.string.groundoverlay_description,
GroundOverlayDemoActivity.class),
new DemoDetails(R.string.marker_demo, R.string.marker_description,
MarkerDemoActivity.class),
new DemoDetails(R.string.polygon_demo, R.string.polygon_description,
PolygonDemoActivity.class),
new DemoDetails(R.string.polyline_demo, R.string.polyline_description,
PolylineDemoActivity.class),
new DemoDetails(R.string.circle_demo, R.string.circle_description,
CircleDemoActivity.class),
new DemoDetails(R.string.tile_overlay_demo, R.string.tile_overlay_description,
TileOverlayDemoActivity.class),
new DemoDetails(R.string.options_demo, R.string.options_description,
OptionsDemoActivity.class),
new DemoDetails(R.string.multi_map_demo, R.string.multi_map_description,
MultiMapDemoActivity.class),
new DemoDetails(R.string.retain_map, R.string.retain_map_description,
RetainMapActivity.class),
new DemoDetails(R.string.raw_mapview_demo, R.string.raw_mapview_description,
RawMapViewDemoActivity.class),
new DemoDetails(R.string.programmatic_demo, R.string.programmatic_description,
ProgrammaticDemoActivity.class)
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListAdapter adapter = new CustomArrayAdapter(this, demos);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
DemoDetails demo = (DemoDetails) getListAdapter().getItem(position);
startActivity(new Intent(this, demo.activityClass));
}
}
そしてここにmain.xmlファイルがあります:
<?xml version="1.0" encoding="utf-8"?>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/no_demos"/>
</LinearLayout>
そしてここに完全なlogcatがあります:
03-09 03:09:11.425: W/dalvikvm(2796): Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (75)
03-09 03:09:11.425: W/dalvikvm(2796): Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed
03-09 03:09:11.455: E/dalvikvm(2796): Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit>
03-09 03:09:11.455: W/dalvikvm(2796): VFY: unable to resolve const-class 117 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity;
03-09 03:09:11.455: D/dalvikvm(2796): VFY: replacing opcode 0x1c at 0x000d
03-09 03:09:11.485: W/dalvikvm(2796): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity;
03-09 03:09:11.555: W/dalvikvm(2796): Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;)
03-09 03:09:11.555: D/AndroidRuntime(2796): Shutting down VM
03-09 03:09:11.555: W/dalvikvm(2796): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
03-09 03:09:11.585: E/AndroidRuntime(2796): FATAL EXCEPTION: main
03-09 03:09:11.585: E/AndroidRuntime(2796): java.lang.ExceptionInInitializerError
03-09 03:09:11.585: E/AndroidRuntime(2796): at java.lang.Class.newInstanceImpl(Native Method)
03-09 03:09:11.585: E/AndroidRuntime(2796): at java.lang.Class.newInstance(Class.java:1319)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.os.Handler.dispatchMessage(Handler.java:99)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.os.Looper.loop(Looper.java:137)
03-09 03:09:11.585: E/AndroidRuntime(2796): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-09 03:09:11.585: E/AndroidRuntime(2796): at java.lang.reflect.Method.invokeNative(Native Method)
03-09 03:09:11.585: E/AndroidRuntime(2796): at java.lang.reflect.Method.invoke(Method.java:511)
03-09 03:09:11.585: E/AndroidRuntime(2796): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-09 03:09:11.585: E/AndroidRuntime(2796): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-09 03:09:11.585: E/AndroidRuntime(2796): at dalvik.system.NativeStart.main(Native Method)
03-09 03:09:11.585: E/AndroidRuntime(2796): Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
03-09 03:09:11.585: E/AndroidRuntime(2796): at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:98)
03-09 03:09:11.585: E/AndroidRuntime(2796): ... 15 more
03-09 03:09:15.014: I/Process(2796): Sending signal. PID: 2796 SIG: 9
API17プラットフォーム4.2.2ターゲットGoogleAPIとデバイス5.1"WVGA(480 * 800:mdpi)でエミュレーターを使用しています。
どうすればこの問題を解決できますか?
また、エミュレータの代わりにアプリケーションを実行するために、デバイスSamsung Galaxy Mini2S6500を購入することを考えていました。このデバイスは適切かどうか?
512MBのRAMとAndroidOS、v2.3.6(Gingerbread)があり、v4.1へのアップグレードが計画されています。