С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

GPSTracker как Service - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Spinner http://www.cyberforum.ru/android-dev/thread1456825.html
кто знает как сделать так чтобы при выборе пункта из Spinner выполнялся отдельный кусок кода? в моем случае есть код для генерации случайных чисел(ключ) и нужно сделать так чтобы при выборе длины...
Программирование Android Удаление записей из таблицы Когда удалял последнюю запись из таблицы из БД все работало норм! А когда удалили запись к примеру под №1, после попытался вывести данные - ошибка! С чем это связано? db.delete("mytable", "id = " +... http://www.cyberforum.ru/android-dev/thread1456771.html
Программирование Android Генерация Color Palette
Есть ли инструмент который генерирует все остальные цвета (http://www.google.com/design/spec/style/color.html#) при указании лишь PrimaryColor?
Задача: сделать клиент под андроид для существующего сервера на php Программирование Android
Доброго времени суток! Дано: есть сервер ngins c базой данных на mysql. Есть клиент на php, все хорошо работает. Задача: сделать клиент под андроид, в котором реализована часть функций клиента...
Программирование Android Сервисы, биндинг http://www.cyberforum.ru/android-dev/thread1456382.html
Добрый день. Такой вопрос. Использую такой сценарий работы с сервисом: 1. запускаю сервис (startService) 2. подключаюсь к нему(bindService BIND_AUTO_CREATE) 3. запускаю сервис в фереграунде...
Программирование Android Переключение на следующий ListView из предыдущего Ребят, такая проблема. Надо сделать переход по выбранному элементу из одного списка в другой и в нем, к примеру, переход на страницу с описанием выбранного элемента. В хедере наверху должно... подробнее

Показать сообщение отдельно
SkyL1ne_tm
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
26.05.2015, 12:44  [ТС]
Возник вопрос: пытаюсь передать из сервиса в активити 2 параметра: latitude и longitude, затем получить их в активити и поместить на карту в виде маркера. Маркер появляется, но с координатами (0;0), хотя должен быть с текущими координатами, полученными от LocationManager-a. Почему?

Сервис:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
public class TrackerService extends Service implements LocationListener {
 
    final String myLog = "my_Logs";
    LocationManager locationManager;
    double latitude, longitude;
    LatLng myPosition;
    Calendar addTimeCalendar;
    String addDate;
    Cursor c = null;
    Location location;
 
    public void onCreate() {
        super.onCreate();
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(myLog, "onStartCommand");
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000 * 60, 25, this);
        Log.d(myLog, "GPS_Provider request location updates");
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 60, 25, this);
        Log.d(myLog, "Network_Provider request location updates");
        getLocation(location);
        run();
        return super.onStartCommand(intent, flags, startId);
    }
 
    public void run() {
        Intent intent = new Intent(MainActivity.BROADCAST_ACTION);
        intent.putExtra("latitude", latitude);
        intent.putExtra("longitude", longitude);
        Log.d(myLog, "lat = " + latitude + " lng = " + longitude);
        sendBroadcast(intent);
    }
 
    @Override
    public void onLocationChanged(Location location) {
        getLocation(location);
    }
 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
 
    @Override
    public void onProviderEnabled(String provider) {
        getLocation(locationManager.getLastKnownLocation(provider));
    }
 
    @Override
    public void onProviderDisabled(String provider) {
    }
 
    public void getLocation(Location location) {
                if (location == null)
                    return;
                if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
                    Log.d(myLog, "GPS Provider Enabled");
                    latitude = location.getLatitude();
                    longitude = location.getLongitude();
                    myPosition = new LatLng(latitude,longitude);
                    addCoordinates();
                    Log.d(myLog, "---GPS Координаты добавлены---");
                } else if (location.getProvider().equals(LocationManager.NETWORK_PROVIDER)) {
                    Log.d(myLog, "NETWORK PROVIDER Enabled");
                    latitude = location.getLatitude();
                    longitude = location.getLongitude();
                    myPosition = new LatLng(latitude,longitude);
                    addCoordinates();
                    Log.d(myLog, "---Network Координаты добавлены---");
                }
    }
 
    public void addCoordinates() {
        addTimeCalendar = Calendar.getInstance();
        SimpleDateFormat addDayFormat = new SimpleDateFormat("yyyy-MM-dd");
        addDate = addDayFormat.format(addTimeCalendar.getTime());
        SQL sqlHelper = new SQL(this);
        SQLiteDatabase db = sqlHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        Log.d(myLog, "--- Insert in coordinates: ---");
        cv.put("Latitude", latitude);
        cv.put("Longitude", longitude);
        cv.put("Time", addDate);
        long rowID = db.insert("coordinates", null, cv);
        Log.d(myLog, "row inserted, ID = " + rowID);
        db.close();
        sqlHelper.close();
    }
 
    public void onDestroy() {
        super.onDestroy();
        stopSelf();
        Log.d(myLog, "onDestroy");
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
 
}
В MainActivity:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
protected void onCreate(Bundle savedInstanceState){
startService(new Intent(this, TrackerService.class));
        mMessageReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d(LOG_TAG, "Got command to update. Updating...");
                latitude = intent.getDoubleExtra("latitude", latitude);
                longitude = intent.getDoubleExtra("longitude", longitude);
                Log.d(LOG_TAG, "lat = " + latitude + " long = " + longitude);
            }
        };
        IntentFilter intFilt = new IntentFilter(BROADCAST_ACTION);
        registerReceiver(mMessageReceiver, intFilt);
}
 
protected void onResume() {
        super.onResume();
        showLocation();
}
В методе showLocation:
Java
1
2
3
4
myPosition = new LatLng(latitude, longitude);
clearMap();
marker = map.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_pink)).position(myPosition).title("GPS"));
marker.showInfoWindow();
Добавлено через 3 минуты
Координаты в базу записываются, когда приложение свернуто(экран не активен). (Посмотрел по треку на карте)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.