Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/61: Рейтинг темы: голосов - 61, средняя оценка - 4.89
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
1

Android + GPS + SMS + PC

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

Author24 — интернет-сервис помощи студентам
Всем привет, друзья, подскажите,

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

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

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

Может есть у кого примеры (Step by step) с описанием и картинками того как мою задачу осуществить ? Примерам буду рад любым, а также критике =] А еще больше если кто-нибудь согласится поддержать тему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2013, 14:25
Ответы с готовыми решениями:

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

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

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

Включение GPS на Android
Здравствуйте! Нуждаюсь в помощи, пытаюсь реализовать такое: автоматическое вкл. gps при старте...

75
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 14:45 21
Author24 — интернет-сервис помощи студентам
вечером выложу (если не забуду :-) ) сервис для работы с GPS.
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:49  [ТС] 22
Цитата Сообщение от haribo Посмотреть сообщение
вечером выложу (если не забуду :-) ) сервис для работы с GPS.
Готовый ? Мне желательно с исходниками, чтобы я смог изучить его внутренности и може на его онснове воплотить свою задумку... Буду благодарен.
0
41 / 41 / 0
Регистрация: 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
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:52  [ТС] 24
не могли бы вы с проектом скинуть ?
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 14:53 25
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
не могли бы вы с проектом скинуть ?
Нет.
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 14:55  [ТС] 26
Я указал в самом начале, что я еще не вскурсе всех возможностей Eclipse, и не все ее функции знаю, осваиваю по мере надобности... Ну нет так нет, буду пробовать код куда-нибудь вставить [=
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
10.07.2013, 15:00 27
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
Я указал в самом начале, что я еще не вскурсе всех возможностей Eclipse, и не все ее функции знаю, осваиваю по мере надобности... Ну нет так нет, буду пробовать код куда-нибудь вставить [=
Дело не в моей зловредности, а в других обстоятельств. Проект который использует данный сервис тебе ничем не поможет. В нем просто вызываются методы из сервиса + обработка логики включения/отключения сервиса.

Для того чтобы разобраться с проектами открой github и поищи проекты android приложений.
Для того чтобы разобраться с моими сервисом почитай про Service, AIDL, и все методы которые описаны в моем коде.
Впихивать код никуда не надо, то что я дал, это два обычных java класса. Создай классы в проекте и скопипасти код, а лучше перепиши руками, с пониманимаем происходяшего - не понятно? гугл. Можно в несколько итераций.
1
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
10.07.2013, 15:30  [ТС] 28
Вас понял, буду читать ! Правда на работе проблематично -каждую минуту дергают юзвери )))
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:09  [ТС] 29
Ребят, гляньте вот этот проект http://hitage.ru/content/pishe... na-android (там внизу на гетхаб имеется сорс) попробуйте его скомпелировать... Я скачал проект, добавил все файлы проекта в компилятор, но на папке SRC/... на каждом классе ошибки. Может я чего не установил из комплекта SDK ? Подскажите оленю...
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:12 30
Не иду по ссылки, не смотрю ничего, дай угадаю: проблема в самой верхней строчке: package com.*.* ?
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:15  [ТС] 31
xmlns:android="http://schemas.android.com/apk/res/android" ?
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:17 32
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
xmlns:android="http://schemas.android.com/apk/res/android" ?
Ты же сказал что ошибки в папке src...
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:19  [ТС] 33
Проблема в классах наверное, то есть такое ощущение что либо где-то они не указаны... либо что-то не загрузилось (дежавю)
Миниатюры
Android + GPS + SMS + PC  
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:20 34
Ох. Открой файл MainActivity и скопируй сюда строчки который Eclipse подчеркивает красным.
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:41  [ТС] 35
Сейчас, заново проект перепишу как в статье... А то я его так запарол что уже проще поновой написать.

Добавлено через 17 минут
Слова подчеркиваю...

Javascript
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
package com.example.coomap;
 
 
import [U]android.app[/U].Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends [U]Activity [/U]implements [U]OnClickListener[/U], [U]LocationListener[/U]{
    [U]Button [/U]btn_find, btn_get;
    [U]EditText [/U]et1,et2;
    String x,y;
    public static final String MYLOG = "My logs";
    private [U]LocationManager[/U] locMan;
    private String provider;
    
    public static double latitude; //широта
    public static double longitude; //долгота
    @Override
    public void onCreate([U]Bundle[/U] savedInstanceState) {
        super.onCreate(savedInstanceState);
        [U]setContentView[/U](R.layout.activity_main);
        
        [U]btn_find[/U] = ([U]Button[/U]) findViewById(R.id.button1);
       [U] btn_find[/U].setOnClickListener(this);
        
        [U]btn_get[/U] = ([U]Button[/U]) findViewById(R.id.button2);
        [U]btn_get[/U].setOnClickListener(this);
        
        et1 = (EditText) findViewById(R.id.editText1);
        et2 = (EditText) findViewById(R.id.editText2);
        
        locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        provider = locMan.getBestProvider(criteria, false);
        Location location = locMan.getLastKnownLocation(provider);
        
        if (location!=null){
            onLocationChanged(location);
        }
        else 
        {
            Toast.makeText(getApplicationContext(), "Location unavailable", Toast.LENGTH_LONG).show();
        }
        
        
        Toast.makeText(getApplicationContext(),
                "LOCATION = "+location+"\nPROVIDER = "+provider,
                Toast.LENGTH_LONG).show();
    }
    public void onClick(View v) {
 
 
 
        Intent intent;
        x = et1.getText().toString();
        y = et2.getText().toString();
        
        switch(v.getId()){
        
        case R.id.button1:
            if (!x.equals("")&&!y.equals("")){
            intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("geo:"+x+","+y));
            startActivity(intent);
            }
            break;
    
        case R.id.button2:
            et1.setText(latitude+"");
            et2.setText(longitude+"");  
            Toast.makeText(getApplicationContext(), "Клик", Toast.LENGTH_LONG).show();
            break;
        }
    
    }
    public void onLocationChanged(Location loc) {
        latitude = loc.getLatitude();
        longitude = loc.getLongitude(); 
    }
    public void onProviderDisabled(String provider) {
        Toast.makeText(getApplicationContext(), "GPS is disabled", Toast.LENGTH_LONG).show();//  не работает
    }
    public void onProviderEnabled(String provider) {
        Toast.makeText(getApplicationContext(), "GPS works", Toast.LENGTH_LONG).show();  //  работает
    }
    public void onStatusChanged(String provider, int status, Bundle extras) {
        
    }
    
    
    @Override
    protected void onPause() {
        super.onPause();
        locMan.removeUpdates(this);
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        locMan.requestLocationUpdates(provider, 400, 1, this);
    }
 
 
}
Добавлено через 20 секунд
Блин....

Добавлено через 57 секунд
У меня на каждой строке ошибки, на переменных, и других функциях... Сплошные подчеркивания =\
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:54 36
package com.example.coomap; - у тебя такой путь до файлов?

Погугли на тему импорта библиотек в eclipse. тебе надо импортировать android-support-v4.jar.
http://developer.android.com/t... brary.html
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 16:58  [ТС] 37
Тут я явно не загрузил какой-то компонент... и переменные все не определены... Но где я так налажал ? Я не знаю.

Добавлено через 2 минуты
Путь до файлов следующий: C:\AndroidDevelopment\workspace\GeoLocator-master\OSALocator

Добавлено через 1 минуту
Цитата Сообщение от haribo Посмотреть сообщение
package com.example.coomap; - у тебя такой путь до файлов?

Погугли на тему импорта библиотек в eclipse. тебе надо импортировать android-support-v4.jar.
http://developer.android.com/t... brary.html
я все возможные компонентов менеджере SDK отметил галочками и установил. Разве там нет того что нужно этому проекту ?
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 16:59 38
Это путь до проектов. Покажи путь до паки src
0
204 / 20 / 1
Регистрация: 29.10.2009
Сообщений: 430
11.07.2013, 17:03  [ТС] 39
Цитата Сообщение от haribo Посмотреть сообщение
Это путь до проектов. Покажи путь до паки src
C:\AndroidDevelopment\workspace\GeoLocator-master\OSALocator\src
0
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
11.07.2013, 17:03 40
Цитата Сообщение от SERGEY199100 Посмотреть сообщение
я все возможные компонентов менеджере SDK отметил галочками и установил. Разве там нет того что нужно этому проекту ?
Прочитай что такое support library.
0
11.07.2013, 17:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2013, 17:03
Помогаю со студенческими работами здесь

GPS android studio
Помогите что здесь за ошибка может быть :...

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

Head first android глава 13 одометр не обновляет gps данные
head first android глава 13 одометр не обновляет gps данные сейчас изучаю андроид по книге head...

Создать приложение для GPS/GSM трекера под Android
Всем доброе утро или вечер))) Вообщем дело обстоит так, сделал я gps/gsm трекер для своего...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru