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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 67, средняя оценка - 4.82
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
#1

Android + GPS + SMS + PC - Программирование Android

08.07.2013, 14:25. Просмотров 9098. Ответов 75
Метки нет (Все метки)

Всем привет, друзья, подскажите,

Я никогда прежде не сталкивался особо с программированием под Java, да и с Android(программами в частности). На данном этапе я как, знающий юзверь, который по примерам может написать программу под Android.

Мне предстоит задача написать (как могу, как знаю) программу под Android, которая отправляла бы по запросу GPS координаты на PC, или на мобильник что ль. Т.е. в проге указывается заранее пользователем мобильный номер на котоорый пойдет рассылка. А тот, кто хочет узнать адрес - присылает СМС запрос на телефон, тот отвечает координатами GPS. Далее на PC(пока хз как вообще) эти координаты будут выводиться на мини-интерактивной карте.

Под PC на C# напишу наверное, или Flash\HTML.

Может есть у кого примеры (Step by step) с описанием и картинками того как мою задачу осуществить ? Примерам буду рад любым, а также критике =] А еще больше если кто-нибудь согласится поддержать тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Android + GPS + SMS + PC (Программирование Android):

Убрать диалог о включении GPS и иконку GPS. Тихий запуск GPS - Программирование Android
Здравствуйте! Подскажите есть ли возможность включить GPS в тихом режиме, чтобы пользователь не догадался об этом! На данном...

Android SMS Manager - Программирование Android
Всем доброго времени суток. Кто нибудь знает, одновременно Android SMS Manager сколько смс может обработать? Могу ли я использовать...

GPS android studio - Программирование Android
Помогите что здесь за ошибка может быть : locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); Вот код : ...

C++ Qt и java Android отправка SMS - Программирование Android
Здравствуйте. Уже пол года мучаю Qt увидел в настройках компиляцию под Android и решил попробовать. Установил Linux и Qt c SDK, NDK, ANT....

Создание GPS навигатора на базе Android - Программирование Android
возможно ли использовать google api maps для создания нового навигатора?

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...

75
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,091
Записей в блоге: 18
Завершенные тесты: 1
08.07.2013, 20:42 #16
часть установится все равно. потом доустановишь
0
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
09.07.2013, 15:50  [ТС] #17
Сеть отвалилась ? =\ JDK скачал. Установил. В папку PATH прописал ...;C:\Program Files\Java\....\bin. Еще создал переменную JAVA_HOME с подобным адресом(не знаю надо было но в одной статье просят).

Добавлено через 15 часов 42 минуты
Ребят а еще подскажите, что за фигня такая у меня происходит:
1. Накидал в форму сырого приложения текст типа Hello_World !
2. Нажал Run. Первый раз в виртуальной машине программа установилась и запустилась.
3. В программе в форме изменил надпись с Hello_World на "Привет мир, бла бла бла...!"
4. Нажал Run. Никакой реакции. Ни в компиляторе - в отчете "Console" не показывается построение, ни в самой виртуалке ничего не происходит.

Что за раз через раз ? Ошибок вроде нету =]
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,091
Записей в блоге: 18
Завершенные тесты: 1
09.07.2013, 18:54 #18
У меня получилось скомпилить и запустить на телефоне вот этот пример http://developer.android.com/trainin...n-updates.html

Вернул не только точные координаты, но и адрес дома в котором нахожусь о_О.

Запарился с этим эмулятором... Так на нем запустить и не удалось. Хоть и есть ман, как это можно сделать: http://jdev.name/2013/02/28/zapuskae.../#.UdwYIuIeqE4

Завтра буду пробовать в виртуальной машине запустить эмулятор. http://androvm.org/blog/androvm-documentation/
0
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
09.07.2013, 21:54  [ТС] #19
Цитата Сообщение от chizz Посмотреть сообщение
У меня получилось скомпилить и запустить на телефоне вот этот пример http://developer.android.com/trainin...n-updates.html

Вернул не только точные координаты, но и адрес дома в котором нахожусь о_О.

Запарился с этим эмулятором... Так на нем запустить и не удалось. Хоть и есть ман, как это можно сделать: http://jdev.name/2013/02/28/zapuskae.../#.UdwYIuIeqE4

Завтра буду пробовать в виртуальной машине запустить эмулятор. http://androvm.org/blog/androvm-documentation/
В певом варианте я попытался проект загрузить примера в студию, создал папку в воркспейсе, скинул туда все из архива примера, в студии прописал создать проект из указанной директории(не очень удобно однако, привычка указывать файл проекта) и попытался скомпелировать. На папках res, scr ругань сплошная. Что я забыл ? )
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,091
Записей в блоге: 18
Завершенные тесты: 1
10.07.2013, 09:37 #20
Там много чего нужно делать Завтра напишу.

Добавлено через 10 часов 58 минут
Вообщем нужно сделать все, что здесь написано: http://developer.android.com/google/play-services/setup.html

Обратить внимание на то, что надо скопировать библиотеку <android sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ в папку с проектом и сделать на нее reference.
1
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 14:45 #21
вечером выложу (если не забуду :-) ) сервис для работы с GPS.
0
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:49  [ТС] #22
Цитата Сообщение от haribo Посмотреть сообщение
вечером выложу (если не забуду :-) ) сервис для работы с GPS.
Готовый ? Мне желательно с исходниками, чтобы я смог изучить его внутренности и може на его онснове воплотить свою задумку... Буду благодарен.
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 14:50 #23
Вечером забуду.
В этой версии есть пара NDA TODO, в остальном полезные методы есть =)

Service:
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/**
 * User: haribo
 * Date: 18.04.13
 * Time: 22:54
 */
public class GPSRobot extends Service {
 
    private Timer timer = new Timer();
    private Integer timerSeconds;
    private String error;
    private List<String> coordinates;
    private double latitude;
    private double longitude;
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO продумать возможную логику
        if ((flags & START_FLAG_RETRY) == 0) {
            // TODO повторный запуск
        } else {
            // TODO фоновые процессы
        }
 
        Bundle extras = intent.getExtras();
        if (extras != null) {
            if (extras.containsKey("imageNew")) {
                String imagePath = extras.getString("imagePath");
                saveNewPhoto(imagePath);
            }
        }
 
        return Service.START_REDELIVER_INTENT;
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
 
    private final GPSRobotInterface.Stub mBinder = new GPSRobotInterface.Stub() {
 
        public void setSendPeriod(int seconds) {
            timerSeconds = seconds;
 
            if (timerSeconds == null || timerSeconds == 0) {
                error = "Установить период отправки координат";
                return;
            }
 
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    setCoordinates();
                }
            }, seconds * 1000, seconds * 1000);
        }
 
        public List<String> calculateCoordinates() {
            setCoordinates();
 
            /*
            Если таймер времени != null, значит функция получения координат по времени включена, начинаем отсчет заного
            после получения координат.
             */
            if (timerSeconds != null) {
                setSendPeriod(timerSeconds);
                Log.d("calculateCoordinates", "setSendPeriod STARTED after check timersecond != null");
            }
 
            if (coordinates != null) {
                return coordinates;
            } else {
                return null;
            }
        }
 
        public List<String> getCoordinates() {
            return coordinates;
        }
 
        public String getCityByCoordinates(double latitude, double longitude) throws RemoteException {
            Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
            String countryName = null;
            try {
                List<Address> addresses = geoCoder.getFromLocation(latitude, longitude, 1);
 
                if (addresses.size() > 0) {
                    countryName = addresses.get(0).getAdminArea();
                }
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return countryName;
        }
 
        public String getCity() throws RemoteException {
            setCoordinates();
            Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
            String countryName = null;
            try {
                List<Address> addresses = geoCoder.getFromLocation(latitude, longitude, 1);
 
                if (addresses.size() > 0) {
                    countryName = addresses.get(0).getLocality();
                }
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            return countryName;
        }
 
        public String getError() {
            return error;
        }
    };
 
    private void setCoordinates() {
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        String provider = getProvider(locationManager);
        /*
        Если GPS выключен, а по заданным критериям не удалось вычислить подоходящий провайдер -
        получаем провайдер с минимальной точностью.
        */
        if (provider == null) {
            Criteria criteria = new Criteria();
            criteria.setAccuracy(Criteria.ACCURACY_COARSE);
            criteria.setCostAllowed(false);
            provider = locationManager.getBestProvider(criteria, true);
        }
        Location location = locationManager.getLastKnownLocation(provider);
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        List<String> coords = new ArrayList<>();
        coords.add(Double.toString(latitude));
        coords.add(Double.toString(longitude));
 
        // TODO
        /*
        пришло время отправить координату, но интернета нет:
        если переменная periodBehavior = true - как только появился интернет(internetConn = true) -
        координаты посылаются, если false - ждет следующего времени.
        */
        coordinates = coords;
        stopSelf();
    }
 
    /*
    Получения всех включенных(возможных) провайдеров, если GPS включен, значит используем GPS.
    Если выключен - пытаемся получить наилучший провайдер по заданным критериям. Если критерии не заданы -
    создаем критерии с лучшей точностью и отсутсвием права взымать дополнительные средства за использование GPS.
     */
    private String getProvider(LocationManager locationManager) {
        String provider = null;
 
        List<String> enabledProviders = locationManager.getProviders(true);
        if (enabledProviders.size() != 0) {
            for (String enabledProvider : enabledProviders) {
                switch (enabledProvider) {
                    case LocationManager.GPS_PROVIDER:
                        provider = LocationManager.GPS_PROVIDER;
                        break;
                    case LocationManager.NETWORK_PROVIDER:
                        provider = LocationManager.NETWORK_PROVIDER;
                        break;
                    case LocationManager.PASSIVE_PROVIDER:
                        provider = LocationManager.PASSIVE_PROVIDER;
                        break;
                    default:
                        provider = getBestProvider(locationManager);
                        break;
                }
            }
        } else {
            provider = getBestProvider(locationManager);
        }
        return provider;
    }
 
    private String getBestProvider(LocationManager locationManager) {
        Criteria criteria = new Criteria();
        criteria.setCostAllowed(false);
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        return locationManager.getBestProvider(criteria, true);
    }
}
AIDL для взаимодействия с методами сервиса
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * User: haribo
 * Date: 19.04.13
 * Time: 1:48
*/
interface GPSRobotInterface {
    /**
     * Включить сервис получения координат, получить координаты
     * @return Объект с координатами.
     */
    List<String> calculateCoordinates();
 
    void setSendPeriod(int seconds);
 
    List<String> getCoordinates();
 
    String getCity();
 
    String getCityByCoordinates(double latitude, double longitude);
 
    String getError();
}
1
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:52  [ТС] #24
не могли бы вы с проектом скинуть ?
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 14:53 #25
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
не могли бы вы с проектом скинуть ?
Нет.
0
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:55  [ТС] #26
Я указал в самом начале, что я еще не вскурсе всех возможностей Eclipse, и не все ее функции знаю, осваиваю по мере надобности... Ну нет так нет, буду пробовать код куда-нибудь вставить [=
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 15:00 #27
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
Я указал в самом начале, что я еще не вскурсе всех возможностей Eclipse, и не все ее функции знаю, осваиваю по мере надобности... Ну нет так нет, буду пробовать код куда-нибудь вставить [=
Дело не в моей зловредности, а в других обстоятельств. Проект который использует данный сервис тебе ничем не поможет. В нем просто вызываются методы из сервиса + обработка логики включения/отключения сервиса.

Для того чтобы разобраться с проектами открой github и поищи проекты android приложений.
Для того чтобы разобраться с моими сервисом почитай про Service, AIDL, и все методы которые описаны в моем коде.
Впихивать код никуда не надо, то что я дал, это два обычных java класса. Создай классы в проекте и скопипасти код, а лучше перепиши руками, с пониманимаем происходяшего - не понятно? гугл. Можно в несколько итераций.
1
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 15:30  [ТС] #28
Вас понял, буду читать ! Правда на работе проблематично -каждую минуту дергают юзвери )))
0
SERGEY199100
20 / 20 / 0
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:09  [ТС] #29
Ребят, гляньте вот этот проект http://hitage.ru/content/pishem-svoi-geolokator-na-android (там внизу на гетхаб имеется сорс) попробуйте его скомпелировать... Я скачал проект, добавил все файлы проекта в компилятор, но на папке SRC/... на каждом классе ошибки. Может я чего не установил из комплекта SDK ? Подскажите оленю...
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:12 #30
Не иду по ссылки, не смотрю ничего, дай угадаю: проблема в самой верхней строчке: package com.*.* ?
0
11.07.2013, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 16:12
Привет! Вот еще темы с ответами:

Android studio, как запускать программу сразу на android смартфоне подключенному к usb? - Программирование Android
android studio, как запускать программу сразу на android смартфоне подключенному к usb?

Ошибка: Caused by Android java.lang.ClassCastException: android.app.Application cannot be cast - Программирование Android
Здравствуйте. Очень нужен ваш совет. При запуске приложения появляется ошибка: Caused by: java.lang.ClassCastException:...

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал - Программирование Android
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае - &quot;RTFM&quot; и точка. Так вот, официального мануала, где есть ответ на...

Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK? - Программирование Android
Можно ли писать в нем готовые приложения Android?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.