Autore Topic: Problema da principiante sulla geolocalizzazione  (Letto 710 volte)

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Problema da principiante sulla geolocalizzazione
« il: 15 Settembre 2014, 17:08:06 CEST »
0
Sto leggendo un manuale sulla programmazione Android, e sono alle prese con la geolocalizzazione.
Sul manuale c'e' un esempio che funziona ma e' complicato, ho cercato di scrivere un programma piu' semplice.

Nelle mie intenzioni il programma dovrebbe far apparire un Toast con le coordinate (latitudine e longitudine)
della posizione dell'utente, INVECE quando lancio il programma Eclipse mi dice che ci sono errori e il
programma non puo' essere eseguito.
DOVE SONO GLI ERRORI?

MainActivity.java
Codice (Java): [Seleziona]
package com.prove.provaproject_31_geo_c;

import java.util.Locale;

import android.support.v7.app.ActionBarActivity;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity
{

        private String providerId=LocationManager.GPS_PROVIDER;
        private Geocoder geo=null;
        private LocationManager locationManager=null;
        private static final int MIN_DIST=20;
        private static final int MIN_PERIOD=30000;
       
        public Location location=null;
       
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        }
       
        @Override
        protected void onResume()
        {
                super.onResume();
                geo=new Geocoder(this,Locale.getDefault());
                locationManager=(LocationManager) getSystemService(LOCATION_SERVICE);
                location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
               
                if (location!=null)
                        updateGUI(location);
               
                locationManager.requestLocationUpdates(providerId,MIN_PERIOD,MIN_DIST,
                                locationListener);
        }
       
        public LocationListener locationListener=new LocationListener()
        {
                @Override
                public void onStatusChanged(String provider,int status, Bundle extras)
                { }
               
                @Override
                public void onProviderEnabled(String provider) { }
               
                @Override
                public void onProviderDisabled(String provider) { }
               
                @Override
                public void onLocationChanged(Location location)
                {
                        updateGUI(location);
                }
        }
       
        public void updateGUI(Location location)
        {
                Location pos=location;
                double latitude=pos.getLatitude();
                double longitude=pos.getLongitude();
               
                Toast.makeText(MainActivity.this,
                                "coordinate: "+latitude+" - "+longitude, Toast.LENGTH_LONG).show();
        }

}

AndroidManifest.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.prove.provaproject_31_geo_c"
   android:versionCode="1"
   android:versionName="1.0" >

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

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
   
    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name=".MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity_main.xml
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context="com.prove.provaproject_31_geo_c.MainActivity" >

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/hello_world" />

</RelativeLayout>

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema da principiante sulla geolocalizzazione
« Risposta #1 il: 15 Settembre 2014, 17:17:06 CEST »
0
se non posti gli errori, purtroppo non possiamo tirare a indovinare..
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sulla geolocalizzazione
« Risposta #2 il: 15 Settembre 2014, 17:22:22 CEST »
0
Quando clicco su "Run>Run As>Android Application" mi appare una finestra intitolata "Android Launch" con il testo "Your project contains error(s), please fix them before running your application".

I pannelli "Console" e "LogCat" di Eclipse sono completamente vuoti.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema da principiante sulla geolocalizzazione
« Risposta #3 il: 15 Settembre 2014, 18:05:21 CEST »
0
Quando clicco su "Run>Run As>Android Application" mi appare una finestra intitolata "Android Launch" con il testo "Your project contains error(s), please fix them before running your application".

Vuol dire che ci sono errori nel codice e non riesce nemmeno a compilarlo. Cerca delle X rosse sulle icone dei file o nel codice (per vedere come sono inserisci apposta un errore in un file java, salvalo e vedi).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Problema da principiante sulla geolocalizzazione
« Risposta #4 il: 15 Settembre 2014, 18:27:40 CEST »
0
La soluzione era banale, si trattava di un punto e virgola in meno, posto il codice:

MainActivity.java
Codice (Java): [Seleziona]
package com.prove.provaproject_31_geo_c;

import java.util.Locale;

import android.support.v7.app.ActionBarActivity;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity
{

        private String providerId=LocationManager.GPS_PROVIDER;
        private Geocoder geo=null;
        private LocationManager locationManager=null;
        private static final int MIN_DIST=20;
        private static final int MIN_PERIOD=30000;
       
        public Location location=null;
       
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        }
       
        @Override
        protected void onResume()
        {
                super.onResume();
                geo=new Geocoder(this,Locale.getDefault());
                locationManager=(LocationManager) getSystemService(LOCATION_SERVICE);
                location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
               
                if (location!=null)
                        updateGUI(location);
               
                locationManager.requestLocationUpdates(providerId,MIN_PERIOD,MIN_DIST,
                                locationListener);
        }
       
        public LocationListener locationListener=new LocationListener()
        {
                @Override
                public void onStatusChanged(String provider,int status, Bundle extras)
                { }
               
                @Override
                public void onProviderEnabled(String provider) { }
               
                @Override
                public void onProviderDisabled(String provider) { }
               
                @Override
                public void onLocationChanged(Location location)
                {
                        updateGUI(location);
                }
        }; // <----- mancava un punto e virgola qui
       
        public void updateGUI(Location location)
        {
                Location pos=location;
                double latitude=pos.getLatitude();
                double longitude=pos.getLongitude();
               
                Toast.makeText(MainActivity.this,
                                "coordinate: "+latitude+" - "+longitude, Toast.LENGTH_LONG).show();
        }

}