|
Android Разработка игр на платформе Android |
16.10.2014, 13:58
|
#1
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Телефония
Как можно перехватить момент поднятия трубки исходящего вызова?
CALL_STATE_OFFHOOK срабатывает сразу когда номер только начал набираться. Есть какие-то решения этой проблемы, подскажите кто знает
|
(Offline)
|
|
16.10.2014, 19:19
|
#2
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
нагуглил что можно только если читать логи
logcat -v time -b radio GSM:D *:S
а как писать это в программе не знаю, никогда с логами не работал
|
(Offline)
|
|
17.10.2014, 16:04
|
#3
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
На этом форуме есть живые Developer-ы? Кто-нибудь может ответить?
|
(Offline)
|
|
17.10.2014, 18:38
|
#4
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Телефония
Сообщение от S_007
На этом форуме есть живые Developer-ы? Кто-нибудь может ответить?
|
Есть, просто те кто действительно хорошо разбираются скорее всего заняты, так что жди.
За неполные сутки никто не ответит.
|
(Offline)
|
|
18.10.2014, 18:13
|
#5
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
Спасибо Anton! Буду ждать... Но походу хочу задать еще один вопрос:
есть строка: String st = "0123456789"; в которой будут только цифры от нуля до девяти
есть массив: int[] data = new int[11];
for(n = 0; n < 11; n++)
{
data[n] = .........
}
как сделать так чтоб при помощи цикла for в массив data преобразовывались в int и записывались именно цифры от нуля до девяти
короче чтоб результат был таким - data[0] = 0; data[1] = 1; data[2] = 2; и т.д.
за ранее очень благодарен за ответы
|
(Offline)
|
|
18.10.2014, 18:49
|
#6
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Телефония
я бы преобразовал строку в char[] и сделал data[n] = chars[n]-'0';
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.10.2014, 21:01
|
#7
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
Igor, можешь показать на примере?
|
(Offline)
|
|
18.10.2014, 21:08
|
#8
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Телефония
int len = st.length();
int[] data = new int[len];
for(int n = 0; n < len; n++)
{
data[n] = Integer.valueOf( st.charAt(n) );
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.10.2014, 21:41
|
#9
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
Жэка спасибо!!! Счас буду пробовать...
|
(Offline)
|
|
18.10.2014, 21:45
|
#10
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
Жека, безразмерное спасибо тебе за такой грамотный пример!!!
то что надо...
только единственное в этой строке добавил -48
data[n] = Integer.valueOf( st.charAt(n) -48 );
иначе в массиве получается data[0] = 48, data[1] = 49, и т.д.
Огромное Спасибо!!!
|
(Offline)
|
|
19.10.2014, 10:35
|
#11
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Телефония
Ага, гуд.
|
(Offline)
|
|
19.10.2014, 21:52
|
#12
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Телефония
А лучше Integer.parseInt(), не просто же ее придумали:
int len = st.length(); int[] data = new int[len]; for(int n = 0; n < len; n++) { data[n] = Integer.parseInt( st.charAt(n) ); }
Как-то так можно
try { // Executes the command. Process process = Runtime.getRuntime().exec("/system/bin/logcat -v time -b radio GSM:D *:S"); // Reads stdout. // NOTE: You can write to stdin of the command // process.getOutputStream(). BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream())); int read; char[] buffer = new char[4096]; StringBuffer output = new StringBuffer(); while ((read = reader.read(buffer)) > 0) { output.append(buffer, 0, read); } reader.close(); // Waits for the command to finish. process.waitFor(); return output.toString(); } catch (IOException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.10.2014, 22:15
|
#13
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Телефония
Чувак, кури TelephonyManager.CALL_STATE_RINGING
Вот на всякий, код с моего Flat Player-а
private void initPhoneListener() { PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { if (state==TelephonyManager.CALL_STATE_RINGING || state==TelephonyManager.CALL_STATE_OFFHOOK) mPlayer.pause(); super.onCallStateChanged(state, incomingNumber); } }; TelephonyManager telephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (telephonyMgr != null) telephonyMgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); }
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
|
|
19.10.2014, 22:16
|
#14
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Телефония
Насчет парсинга лока - эх и костыль ты придумал. Ниче, что на разных девайсах логи как минимум разные? А могут и вообще быть отключены )))
|
(Offline)
|
|
20.10.2014, 00:47
|
#15
|
Нуждающийся
Регистрация: 30.01.2011
Сообщений: 76
Написано одно полезное сообщение (для 7 участников)
|
Ответ: Телефония
не думал что на этот форум ещё заглядывают крутые программисты...! Спасибо вам ребята, за ваши ответы и наглядные примеры. Reglon, твой пример, ну ты просто маладца! Нагуглить такого примера мне не удалось по всей паутине, спасибо тебе, теперь буду знать как с логами работать. Только уже немного остыл по поводу этого, потому что где-то прочитал, да и pozitiffcat это подтверждает, что при помощи логов не а каждом аппарате будет работать. TelephonyManager раскурил вдоль и поперек, но CALL_STATE_RINGING срабатывает при входящем звонке. А задумка была до боли банальная - именно при исходящем вызове чтоб начинал работать счетчик секунд после поднятия трубки на другом конце провода, ведь это в каждом аппарате есть, (т.е. длительность разговора) только чуваки из googla такую функцию к сожалению не сделали. Если в чём-то не прав то поправьте, буду очень рад.
Ну наберусь наглости задать ещё один вопрос
как из программы удалять входящие смс, хоть по одной хоть все
нашёл вот такой код, на нём приложение вылетает, как правильно подскажите пожалуйста
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = getContentResolver().query(uriSms, null,null,null,null);
int thread_id = c.getInt(1); //get the thread_id
getContentResolver().delete(Uri.parse("content://sms/conversations/" + thread_id),null,null);
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:54.
|