소스코드 자체에 에러는 없는 g1에서 실행시키면 실행되지 않습니다
g1은 업그레이드 시켜서 1.5버전이구요
SDK버전도 1.5입니다.
밑에 canvas.Path가 문제인 것 같은데 설명 부탁드립니다.
package Messenger.com;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.RectF;
import android.location.Location;
import android.view.MotionEvent;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class MyPositionOverlay extends Overlay {
Location location;
private final int mRadius = 5;
private float mX, mY;
private static final float TOUCH_TOLERANCE = 4;
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
private Paint mBitmapPaint;
private Bitmap src;
private Paint mPaint;
public void init() {
mBitmap = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFF246165);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(12);
}
/** Get the position location */
public Location getLocation() {
return location;
}
/** Set the position location */
public void setLocation(Location location) {
this.location = location;
}
private void touch_start(float x, float y) {
// System.out.println("onClick");
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
}
private void touch_move(float x, float y) {
System.out.println("onClick");
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
mX = x;
mY = y;
}
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();
if (shadow == false) {
// Get the current location
Double latitude = location.getLatitude() * 1E6;
Double longitude = location.getLongitude() * 1E6;
GeoPoint geoPoint = new GeoPoint(latitude.intValue(), longitude
.intValue());
// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);
RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
point.x + mRadius, point.y + mRadius);
// Setup the paint
Paint paint = new Paint();
paint.setARGB(255, 255, 255, 255);
paint.setAntiAlias(true);
paint.setFakeBoldText(true);
Paint backPaint = new Paint();
backPaint.setARGB(180, 50, 50, 50);
backPaint.setAntiAlias(true);
RectF backRect = new RectF(point.x + 2 + mRadius, point.y - 3
* mRadius, point.x + 65, point.y + mRadius);
// Draw the marker
canvas.drawOval(oval, paint);
canvas.drawRoundRect(backRect, 5, 5, backPaint);
canvas.drawText("Here I Am", point.x + 2 * mRadius, point.y, paint);
canvas.drawPath(mPath, backPaint);
}
super.draw(canvas, mapView, shadow);
}
private void touch_up() {
System.out.println("onClick");
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
mPath.reset();
}
// @Override
public boolean onTouchEvent(android.view.MotionEvent event, MapView mapView) {
System.out.println("onClick");
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(x, y);
//invalidate();
break;
case MotionEvent.ACTION_MOVE:
touch_move(x, y);
//invalidate();
break;
case MotionEvent.ACTION_UP:
touch_up();
//invalidate();
break;
}
return true;
}
@Override
public boolean onTap(GeoPoint point, MapView mapView) {
return false;
}
}
로그캣의 에러에 대한 부분입니다
10-16 03:34:04.588: ERROR/AndroidRuntime(26215): Uncaught handler: thread main exiting due to uncaught exception
10-16 03:34:04.738: DEBUG/dalvikvm(26215): GC freed 9811 objects / 683000 bytes in 132ms
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): java.lang.NullPointerException
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.graphics.Canvas.drawPath(Canvas.java:937)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at Messenger.com.MyPositionOverlay.draw(MyPositionOverlay.java:115)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.google.android.maps.Overlay.draw(Overlay.java:179)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:45)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.google.android.maps.MapView.onDraw(MapView.java:471)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.View.draw(View.java:5838)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.View.draw(View.java:5841)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): requestFailed()
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): java.net.UnknownHostException: Host is unresolved: www.google.com:80
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at java.net.Socket.connect(Socket.java:1002)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.AndroidHttpClient.execute(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.GoogleHttpClient.executeWithoutRewriting(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.GoogleHttpClient.execute(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.GoogleHttpClient.execute(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.getResponse(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.getResponseCode(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.async.AsyncHttpRequestFactory$AsyncHttpRequestImpl.run(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.async.AsyncHttpRequestFactory.run(Unknown Source)
10-16 03:34:05.498: ERROR/ProtoRequestListener(60): at com.google.common.lang.ThreadFactory$ThreadImpl.run(Unknown Source)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.View.draw(View.java:5841)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1847)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewRoot.draw(ViewRoot.java:1217)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.os.Looper.loop(Looper.java:123)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at java.lang.reflect.Method.invokeNative(Native Method)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at java.lang.reflect.Method.invoke(Method.java:521)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-16 03:34:04.738: ERROR/AndroidRuntime(26215): at dalvik.system.NativeStart.main(Native Method)
공지사항을 확인하였습니다.