title: Android can't create handler inside thread that has not called looper.prepare()
body: <p>I started developing an Android application that record a video and I need to gather the GPS location every 1 minute</p>
  
  <pre><code>public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      // Create an instance of Camera
      mCamera = getCameraInstance();
  
      // Create our Preview view and set it as the content of our activity.
      mPreview = new CameraPreview(this, mCamera);
      FrameLayout preview = (FrameLayout) findViewById(id.camera_preview);
      preview.addView(mPreview);
  
      private boolean isRecording = false;
  
      // Add a listener to the Capture button
      Button captureButton = (Button) findViewById(id.button_capture);
      captureButton.setOnClickListener(
        new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          if (isRecording) {
              // stop recording and release camera
              mMediaRecorder.stop();  // stop the recording
              releaseMediaRecorder(); // release the MediaRecorder object
              mCamera.lock();         // take camera access back from MediaRecorder
  
              // inform the user that recording has stopped
              setCaptureButtonText("Capture");
              isRecording = false;
          } else {
              // initialize video camera
              if (prepareVideoRecorder()) {
                  // Camera is available and unlocked, MediaRecorder is prepared,
                  // now you can start recording
                  mMediaRecorder.start();
  
                  // get the gps data
                  GpsDataFile.getOutPutDataFile(DATA_TYPE_GPS);
                  mTimer = new Timer;
                  mTimer.schedule(new setGpsDataToFile(),0,1000)
                  // inform the user that recording has started
                  setCaptureButtonText("Stop");
                  isRecording = true;
              } else {
                  // prepare didn't work, release the camera
                  releaseMediaRecorder();
                  // inform user
              }
          }
      }
   }
  
  
  
  Private Class setGpsDataToFile extends TimerTask {
    @Override
    public void run {
     // getLocation contains another timer task
     myLocation.getLocation(getApplicationContext(), mLocationResult); // I got the error here
     // write the gps data in a file
     gpsDataCapture(GpsDataFile, mLatitude, mLongitude);
    }
  }
  </code></pre>
  
  <p>I got the error <code>FATAL EXCEPTION: Timer-1: can't create handler inside thread that has not called looper.prepare()</code> and I think the problem is that I create a handler inside an other.
  So is there an other way to get the same result?</p>