Strict Standards: Non-static method utf_normalizer::nfc() should not be called statically in /www/htdocs/w006661d/anddev/includes/utf/utf_tools.php on line 1781
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)

Strict Standards: Non-static method utf_normalizer::nfc() should not be called statically in /www/htdocs/w006661d/anddev/includes/utf/utf_tools.php on line 1781
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4362: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4364: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4365: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4366: Cannot modify header information - headers already sent by (output started at /includes/utf/utf_tools.php:1781)
anddev.org • View topic - One application base on GoogleMapsAPI,has some problems

One application base on GoogleMapsAPI,has some problems

Tutorials that use the MapActivity. Many using GPS functionality.

One application base on GoogleMapsAPI,has some problems

Postby kukudan4 » Sun Mar 06, 2011 3:38 am

size=150]It works well on the Emulator,but when I apply it on my XT800,2.2.1ROM.
It broken down.
Here is my code and logcat.Please help me to solve the problems.Thanks!
[/size]
log.txt
(12.45 KiB) Downloaded 169 times

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.  
  3.  
  4. package net.learn2develop.GoogleMaps;
  5.  
  6. import java.io.IOException;
  7. import java.util.List;
  8. import java.util.Locale;
  9.  
  10. import com.google.android.maps.GeoPoint;
  11. import com.google.android.maps.MapActivity;
  12. import com.google.android.maps.MapController;
  13. import com.google.android.maps.MapView;
  14. import com.google.android.maps.Overlay;
  15.  
  16. import android.content.BroadcastReceiver;
  17. import android.content.Context;
  18. import android.content.Intent;
  19. import android.content.IntentFilter;
  20. import android.content.SharedPreferences;
  21. import android.graphics.Bitmap;
  22. import android.graphics.BitmapFactory;
  23. import android.graphics.Canvas;
  24. import android.graphics.Point;
  25. import android.location.Address;
  26. import android.location.Geocoder;
  27. import android.os.Bundle;
  28. import com.google.android.maps.MapView.LayoutParams;
  29.  
  30. import android.telephony.SmsMessage;
  31. import android.view.KeyEvent;
  32. import android.view.MotionEvent;
  33. import android.view.View;
  34. import android.widget.LinearLayout;
  35. import android.widget.Toast;
  36.  
  37. public class MapsActivity extends MapActivity {
  38.         MapView mapView;
  39.         MapController mc;
  40.         GeoPoint p;
  41.         public static final String PREF_FILE_NAME = "PrefFile";
  42.         String[] coordinates = new String[2];
  43.         String[] location = new String[2];
  44.         String temp;
  45.         Bundle bundle;
  46.  
  47.         public void onCreate(Bundle savedInstanceState) {
  48.                 super.onCreate(savedInstanceState);
  49.                 setContentView(R.layout.main);
  50.  
  51.                 mapView = (MapView) findViewById(R.id.mapView);
  52.                 LinearLayout zoomLayout = (LinearLayout) findViewById(R.id.zoom);
  53.                 View zoomView = mapView.getZoomControls();
  54.  
  55.                 zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(
  56.                                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  57.                 mapView.displayZoomControls(true);
  58.  
  59.                 // mapView.setSatellite(true); /**显示卫星视图
  60.                 // mapView.setStreetView(true); /**显示街道视图
  61.  
  62.                 mc = mapView.getController();
  63.  
  64.                 bundle = getIntent().getExtras();
  65.                
  66.                 try {
  67.                         if (bundle == null) {
  68.                                 temp = "40.849165,123.328739";
  69.                         } else {
  70.                                 temp = bundle.getString("location");
  71.                         }
  72.                         location = temp.split(",");
  73.                 } catch (NumberFormatException e) {
  74.                         e.toString();
  75.                 }
  76.                
  77.                
  78.  
  79.                 for (int i = 0; i < location.length; i++) {
  80.                         coordinates[i] = location[i];
  81.                 }
  82.  
  83.                 double lat = Double.parseDouble(coordinates[0]);
  84.                 double lng = Double.parseDouble(coordinates[1]);
  85.  
  86.                 p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
  87.  
  88.                 mc.animateTo(p);
  89.  
  90.                 mc.setZoom(17);
  91.                 MapOverlay mapOverlay = new MapOverlay();
  92.                 List<Overlay> listOfOverlays = mapView.getOverlays();
  93.                 listOfOverlays.clear();
  94.                 listOfOverlays.add(mapOverlay);
  95.  
  96.                 mapView.invalidate();
  97.  
  98.         }
  99.  
  100.  
  101.         class MapOverlay extends com.google.android.maps.Overlay {
  102.                 @Override
  103.                 public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
  104.                                 long when) {
  105.                         super.draw(canvas, mapView, shadow);
  106.  
  107.                         // ---translate the GeoPoint to screen pixels---
  108.                         Point screenPts = new Point();
  109.                         mapView.getProjection().toPixels(p, screenPts);
  110.  
  111.                         // ---add the marker---
  112.                         Bitmap bmp = BitmapFactory.decodeResource(getResources(),
  113.                                         R.drawable.icon);
  114.                         canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 50, null);
  115.                         return true;
  116.                 }
  117.  
  118.                 public boolean onTouchEvent(MotionEvent event, MapView mapView) {
  119.                         // ---when user lifts his finger---
  120.                         if (event.getAction() == 1) {
  121.                                 GeoPoint p = mapView.getProjection().fromPixels(
  122.                                                 (int) event.getX(), (int) event.getY());
  123.  
  124.                                 /** 通过获取坐标来拿到地理名称加上坐标显示 **/
  125.                                 Geocoder geoCoder = new Geocoder(getBaseContext(),
  126.                                                 Locale.getDefault());
  127.                                 try {
  128.                                         List<Address> addresses = geoCoder.getFromLocation(
  129.                                                         p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6,
  130.                                                         1);
  131.  
  132.                                         String add = "";
  133.                                         if (addresses.size() > 0) {
  134.                                                 for (int i = 0; i < addresses.get(0)
  135.                                                                 .getMaxAddressLineIndex(); i++)
  136.                                                         add += addresses.get(0).getAddressLine(i) + "\n"
  137.                                                                         + p.getLatitudeE6() / 1E6 + ","
  138.                                                                         + p.getLongitudeE6() / 1E6 + "\n";
  139.                                         }
  140.  
  141.                                         Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT)
  142.                                                         .show();
  143.                                 } catch (IOException e) {
  144.                                         e.printStackTrace();
  145.                                 }
  146.  
  147.                                 /**
  148.                                  * 通过已知的地名找出位置 Geocoder geoCoder = new
  149.                                  * Geocoder(getBaseContext(), Locale.getDefault()); try {
  150.                                  * List<Address> addresses = geoCoder.getFromLocationName(
  151.                                  * "empire state building", 5); String add = ""; if
  152.                                  * (addresses.size() > 0) { p = new GeoPoint( (int)
  153.                                  * (addresses.get(0).getLatitude() * 1E6), (int)
  154.                                  * (addresses.get(0).getLongitude() * 1E6)); mc.animateTo(p);
  155.                                  * mapView.invalidate(); } } catch (IOException e) {
  156.                                  * e.printStackTrace(); }
  157.                                  */
  158.                                 return true;
  159.                         } else
  160.                                 return false;
  161.                 }
  162.  
  163.         }
  164.  
  165.         /** Called when the activity is first created. */
  166.         @Override
  167.         public boolean onKeyDown(int keyCode, KeyEvent event) {
  168.                 MapController mc = mapView.getController();
  169.                 switch (keyCode) {
  170.                 case KeyEvent.KEYCODE_3:
  171.                         mc.zoomIn();
  172.                         break;
  173.                 case KeyEvent.KEYCODE_1:
  174.                         mc.zoomOut();
  175.                         break;
  176.                 }
  177.                 return super.onKeyDown(keyCode, event);
  178.         }
  179.  
  180.         @Override
  181.         protected boolean isRouteDisplayed() {
  182.                 return false;
  183.         }
  184.  
  185. }
Parsed in 0.020 seconds, using GeSHi 1.0.8.4

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.  
  3.  
  4. package net.learn2develop.GoogleMaps;
  5.  
  6. import java.io.Serializable;
  7.  
  8. import android.content.BroadcastReceiver;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.os.Bundle;
  12. import android.telephony.gsm.SmsMessage;
  13. import android.util.Log;
  14. import android.widget.Toast;
  15.  
  16. public class SMSReceiver extends BroadcastReceiver implements Serializable {
  17.  
  18.         @Override
  19.         public void onReceive(Context context, Intent intent) {
  20.  
  21.                 if ("android.provider.Telephony.SMS_RECEIVED"
  22.                                 .equals(intent.getAction())) {
  23.                         StringBuilder sb = new StringBuilder();
  24.                         // 接收由SMS传过来的数据
  25.                         Bundle bundle = intent.getExtras();
  26.                         // 判断是否有数据
  27.                         if (bundle != null) {
  28.                                 // 通过pdus可以获得接收到的所有短信消息
  29.                                 Object[] objArray = (Object[]) bundle.get("pdus");
  30.                                 /* 构建短信对象array,并依据收到的对象长度来创建array的大小 */
  31.                                 SmsMessage[] messages = new SmsMessage[objArray.length];
  32.                                 for (int i = 0; i < objArray.length; i++) {
  33.                                         messages[i] = SmsMessage
  34.                                                         .createFromPdu((byte[]) objArray[i]);
  35.                                 }
  36.  
  37.                                 /* 将送来的短信合并自定义信息于StringBuilder当中 */
  38.                                 for (SmsMessage currentMessage : messages) {
  39.                                         sb.append(currentMessage.getDisplayMessageBody());
  40.                                 }
  41.                         }
  42.  
  43.                         Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
  44.  
  45.                         Intent mainIntent = new Intent(context, MapsActivity.class);
  46.                         mainIntent.putExtra("location", sb.toString());
  47.                         mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  48.                         context.startActivity(mainIntent);
  49.  
  50.                 }
  51.         }
  52.  
  53. }
  54.  
Parsed in 0.012 seconds, using GeSHi 1.0.8.4

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.  
  3. manifest.xml
  4. <?xml version="1.0" encoding="utf-8"?>
  5. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  6.         package="net.learn2develop.GoogleMaps" android:versionCode="1"
  7.         android:versionName="1.0.0">
  8.         <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  9.         <uses-permission android:name="android.permission.INTERNET" />
  10.         <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
  11.         <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
  12.  
  13.         <application android:icon="@drawable/icon" android:label="@string/app_name">
  14.                 <activity android:name=".MapsActivity" android:label="@string/app_name">
  15.                         <intent-filter>
  16.                                 <action android:name="android.intent.action.MAIN" />
  17.                                 <category android:name="android.intent.category.LAUNCHER" />
  18.                         </intent-filter>
  19.                 </activity>
  20.  
  21.                 <receiver android:name="SMSReceiver">
  22.                         <intent-filter>
  23.                                 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  24.                         </intent-filter>
  25.                 </receiver>
  26.                 <uses-library android:name="com.google.android.maps" />
  27.         </application>
  28. </manifest>
  29.  
  30.  
  31.  
  32. main.xml
  33. <?xml version="1.0" encoding="utf-8"?>
  34. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  35.         android:layout_width="fill_parent" android:layout_height="fill_parent">
  36.  
  37.         <com.google.android.maps.MapView
  38.                 android:id="@+id/mapView" android:layout_width="fill_parent"
  39.                 android:layout_height="fill_parent" android:enabled="true"
  40.                 android:clickable="true" android:apiKey="0XNxIh2B3i4Pkvl_csKw1UrAoEsywGp_5ngeJLg" />
  41.  
  42.         <LinearLayout android:id="@+id/zoom" android:layout_width="wrap_content"
  43.                 android:layout_height="wrap_content" android:layout_alignParentBottom="true"
  44.                 android:layout_centerHorizontal="true" />
  45.  
  46. </RelativeLayout>
  47.  
  48.  
Parsed in 0.013 seconds, using GeSHi 1.0.8.4
Attachments
GoogleMaps.zip
My Application soursecode
(96.85 KiB) Downloaded 187 times
kukudan4
Once Poster
Once Poster
 
Posts: 1
Joined: Sun Mar 06, 2011 3:19 am

Top

Return to Map Tutorials

Who is online

Users browsing this forum: No registered users and 4 guests