Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8751295
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T13:01:06+00:00 2026-06-13T13:01:06+00:00

I’m not sure what happend here. I was adding a statement to make the

  • 0

I’m not sure what happend here. I was adding a statement to make the phone vibrate when on a long press. I placed the statement in the wrong spot and the phone was vibrating continuously. So I unplugged the phone and powered it off. Then I removed the code that was causing my phone to do this. Then tried to relaunch the app as it was before I added the code and I get this now. I’m not sure what happened because the code is exactly the same as when it was working. Could cached files be causing this?

Here is my logcat:

10-28 17:34:51.381: W/dalvikvm(718): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
10-28 17:34:51.389: E/AndroidRuntime(718): FATAL EXCEPTION: main
10-28 17:34:51.389: E/AndroidRuntime(718): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.almyz125.stamp/com.almyz125.stamp.Map}: java.lang.NullPointerException
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.os.Looper.loop(Looper.java:137)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-28 17:34:51.389: E/AndroidRuntime(718):  at java.lang.reflect.Method.invokeNative(Native Method)
10-28 17:34:51.389: E/AndroidRuntime(718):  at java.lang.reflect.Method.invoke(Method.java:511)
10-28 17:34:51.389: E/AndroidRuntime(718):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-28 17:34:51.389: E/AndroidRuntime(718):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-28 17:34:51.389: E/AndroidRuntime(718):  at dalvik.system.NativeStart.main(Native Method)
10-28 17:34:51.389: E/AndroidRuntime(718): Caused by: java.lang.NullPointerException
10-28 17:34:51.389: E/AndroidRuntime(718):  at com.almyz125.stamp.Map.onCreate(Map.java:88)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.Activity.performCreate(Activity.java:5008)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-28 17:34:51.389: E/AndroidRuntime(718):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-28 17:34:51.389: E/AndroidRuntime(718):  ... 11 more

Here is my code also:

public class Map extends MapActivity implements LocationListener {

// variable for determining long press and then automatically adding a pin
// to the map
private int minMillisecondThresholdForLongClick = 800;
private long startTimeForLongClick = 0;
private float xScreenCoordinateForLongClick;
private float yScreenCoordinateForLongClick;
private float xtolerance = 10;// x pixels that your finger can be off but
                                // still constitute    a long press
private float ytolerance = 10;// y pixels that your finger can be off but
                                // still constitute a long press
private float xlow; // actual screen coordinate when you subtract the
                    // tolerance
private float xhigh; // actual screen coordinate when you add the tolerance
private float ylow; // actual screen coordinate when you subtract the
                    // tolerance
private float yhigh; // actual screen coordinate when you add the tolerance

// Variables
MapView mapView;
MapController mc;
long start;
long stop;
int x, y, longTemp, latTemp;
GeoPoint touchPoint;
LocationManager lm;
Drawable d;
Location lastKnownLoc;
List<Overlay> mapoverlays;
GeoPoint gp;
private MyLocationOverlay myLocOverlay, compass;

// Auto Generated Methods
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // sets view to map
    setContentView(R.layout.main);
    mapView = (MapView) findViewById(R.id.mvMain);
    mc = mapView.getController();
    compass = new MyLocationOverlay(Map.this, mapView);
    d = getResources().getDrawable(R.drawable.icon);
    mapoverlays = mapView.getOverlays();
    myLocOverlay = new MyLocationOverlay(this, mapView);

    mapoverlays = mapView.getOverlays();

    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    lastKnownLoc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    longTemp = (int) (lastKnownLoc.getLongitude() * 1e6);
    latTemp = (int) (lastKnownLoc.getLatitude() * 1e6);
    gp = new GeoPoint(latTemp, longTemp);

    // enables on screen zoom buttons
    mapView.setBuiltInZoomControls(true);

    // create overlay that shows our location

    // add this overlay to the map and refresh it
    mapView.getOverlays().add(myLocOverlay);
    mapView.invalidate();

    mapoverlays.add(compass);
    compass.enableMyLocation();
    compass.enableCompass();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    // return super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options, menu);
    return true;
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    // handle on menu item selected here
    super.onMenuItemSelected(featureId, item);

    // if item is selected satellite view is toggled
    if (item.getItemId() == R.id.opt_tog_view) {
        toggleSat();
    }

    return true;
}

// method to toggles satellite view called in option menu
public void toggleSat() {
    if (mapView.isSatellite()) {

        mapView.setSatellite(false);
    } else {
        mapView.setSatellite(true);
    }
}

// Volume keys zoom in and out.
public boolean onKeyDown(int keyCode, KeyEvent event) {

    mc = mapView.getController();
    switch (keyCode) {
    case KeyEvent.KEYCODE_VOLUME_UP:
        mc.zoomIn();
        break;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        mc.zoomOut();
        break;
    }
    return super.onKeyDown(keyCode, event);
}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    compass.disableMyLocation();
    compass.disableCompass();
    myLocOverlay.disableMyLocation();

}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    gp = new GeoPoint(latTemp, longTemp);
    myLocOverlay.enableMyLocation();
    compass.enableMyLocation();
    compass.enableCompass();
    mapoverlays.add(compass);
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    // TODO Auto-generated method stub

}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    /*
     * We want to capture the place the user long pressed on the map and add
     * a marker (pin) on the map at that lat/long. This solution: 1. Allows
     * you to set the time threshold for what constitutes a long press 2.
     * Doesn't get fooled by scrolling, multi-touch, or non-multi-touch
     * events
     * 
     * Thank you Roger Kind Kristiansen for the main idea
     */

    // get the action from the MotionEvent: down, move, or up
    int actionType = ev.getAction();


    if (actionType == MotionEvent.ACTION_DOWN) {
        // user pressed the button down so let's initialize the main
        // variables that we care about:
        // later on when the "Action Up" event fires, the "DownTime" should
        // match the "startTimeForLongClick" that we set here
        // the coordinate on the screen should not change much during the
        // long press

        startTimeForLongClick = ev.getEventTime();
        xScreenCoordinateForLongClick = ev.getX();
        yScreenCoordinateForLongClick = ev.getY();


    } else if (actionType == MotionEvent.ACTION_MOVE) {
        // For non-long press actions, the move action can happen a lot
        // between ACTION_DOWN and ACTION_UP
        if (ev.getPointerCount() > 1) {
            // easiest way to detect a multi-touch even is if the pointer
            // count is greater than 1
            // next thing to look at is if the x and y coordinates of the
            // person's finger change.
            startTimeForLongClick = 0; // instead of a timer, just reset
                                        // this class variable and in our
                                        // ACTION_UP event, the DownTime
                                        // value will not match and so we
                                        // can reset.
        } else {
            // I know that I am getting to the same action as above,
            // startTimeForLongClick=0, but I want the processor
            // to quickly skip over this step if it detects the pointer
            // count > 1 above
            float xmove = ev.getX(); // where is their finger now?
            float ymove = ev.getY();
            // these next four values allow you set a tiny box around their
            // finger in case
            // they don't perfectly keep their finger still on a long click.
            xlow = xScreenCoordinateForLongClick - xtolerance;
            xhigh = xScreenCoordinateForLongClick + xtolerance;
            ylow = yScreenCoordinateForLongClick - ytolerance;
            yhigh = yScreenCoordinateForLongClick + ytolerance;
            if ((xmove < xlow || xmove > xhigh)
                    || (ymove < ylow || ymove > yhigh)) {
                // out of the range of an acceptable long press, reset the
                // whole process
                startTimeForLongClick = 0;

            }

        }



    } else if (actionType == MotionEvent.ACTION_UP) {
        // determine if this was a long click:
        long eventTime = ev.getEventTime();
        long downTime = ev.getDownTime(); // this value will match the
                                            // startTimeForLongClick
                                            // variable as long as we didn't
                                            // reset the
                                            // startTimeForLongClick
                                            // variable because we detected
                                            // nonsense that invalidated a
                                            // long press in the ACTION_MOVE
                                            // block

        // make sure the start time for the original "down event" is the
        // same as this event's "downTime"
        if (startTimeForLongClick == downTime) {
            // see if the event time minus the start time is within the
            // threshold
            if ((eventTime - startTimeForLongClick) > minMillisecondThresholdForLongClick) {
                // make sure we are at the same spot where we started the
                // long click
                float xup = ev.getX();
                float yup = ev.getY();
                // I don't want the overhead of a function call:
                xlow = xScreenCoordinateForLongClick - xtolerance;
                xhigh = xScreenCoordinateForLongClick + xtolerance;
                ylow = yScreenCoordinateForLongClick - ytolerance;
                yhigh = yScreenCoordinateForLongClick + ytolerance;
                if ((xup > xlow && xup < xhigh)
                        && (yup > ylow && yup < yhigh)) {

                    // **** safe to process your code for an actual long
                    // press ****
                    // comment out these next rows after you confirm in
                    // logcat that the long press works
                    long totaltime = eventTime - startTimeForLongClick;
                    String strtotaltime = Long.toString(totaltime);
                    Log.d("long press detected: ", strtotaltime);

                    // Below is code from my touchy class

                    x = (int) ev.getX();
                    y = (int) ev.getY();
                    touchPoint = mapView.getProjection().fromPixels(x, y);

                    Builder alert = new AlertDialog.Builder(Map.this);
                    alert.setTitle("Pick an option.");
                    alert.setNeutralButton("Place a marker",
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,
                                        int which) {

                                    OverlayItem overlayItem = new OverlayItem(
                                            touchPoint, "What's up",
                                            "2nd String");
                                    Mark custom = new Mark(d, Map.this);
                                    custom.dropMarker(overlayItem);
                                    mapoverlays.add(custom);

                                }
                            });
                    alert.setPositiveButton("Get Address",
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,
                                        int which) {

                                    Geocoder geocoder = new Geocoder(
                                            getBaseContext(), Locale
                                                    .getDefault());

                                    try {

                                        List<Address> address = geocoder.getFromLocation(
                                                touchPoint.getLatitudeE6() / 1E6,
                                                touchPoint.getLongitudeE6() / 1E6,
                                                1);
                                        if (address.size() > 0) {
                                            String display = "";
                                            for (int i = 0; i < address
                                                    .get(0)
                                                    .getMaxAddressLineIndex(); i++) {

                                                display += address.get(0)
                                                        .getAddressLine(i)
                                                        + "\n";
                                            }

                                            Toast t = Toast.makeText(
                                                    getBaseContext(),
                                                    display,
                                                    Toast.LENGTH_LONG);
                                            t.show();
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    } finally {

                                    }

                                }
                            });
                    alert.show();

                }

            }
        }


    }

    return super.dispatchTouchEvent(ev) && true;
}
}

Here is my Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.almyz125.stamp" >

<uses-permission android:name="android.permission.INTERNET" />

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
    android:icon="@drawable/icon"
    android:label="@string/activity_main_map" >
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name="com.almyz125.stamp.Map"
        android:label="STAMP" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" >
            </category>

            <action android:name="android.intent.action.MAIN" >
            </action>
        </intent-filter>
    </activity>
    </application>

</manifest>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T13:01:07+00:00Added an answer on June 13, 2026 at 1:01 pm

    You can’t be sure that getLastKnownLocation wont be null at the time you create your activity containing MyLocationOverlay, so you have to account for it like the snippet below:

    if(lastKnownLoc != null){
        longTemp = (int) (lastKnownLoc.getLongitude() * 1e6);
        latTemp = (int) (lastKnownLoc.getLatitude() * 1e6);
        gp = new GeoPoint(latTemp, longTemp);
    }
    

    The fact that it worked before you restarted your phone is simply because android had a previous fix on your location, but that might not always be the case.

    You might also want to try using the method runOnFirstFix as a better solution to your problem.

    compass.runOnFirstFix(new Runnable() {
    
            @Override
            public void run() {
                Location location = compass.getLastFix();
                //do your location code here
            }
        });
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I need a function that will clean a strings' special characters. I do NOT
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I'm trying to create an if statement in PHP that prevents a single post
Is it possible to replace javascript w/ HTML if JavaScript is not enabled on
I have a .ini file as follows: [playlist] numberofentries=2 File1=http://87.230.82.17:80 Title1=(#1 - 365/1400) Example
I have just tried to save a simple *.rtf file with some websites and
For some reason, after submitting a string like this Jack’s Spindle from a text

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.