Пропущенные СМС и Звонки.
Пропущенные СМС и Звонки.
Всем доброго времени суток.
Должен предупредить сразу что в Eclipse я фактически полный ноль, хотя имею не малый опыт кодинга на других языках для других платформ. Да и в модинге готовых АРК и Android-a в целом я тоже не плохо преуспел.
Вообщем возникла необходимость написать маленькую утилитину которая будет отслеживать СМС и Звонки. И при их поступлении будет писать ключ в некий порт - для включения светодиода индикации. И естественно при отсутствии пропущенных СМС и Звонков, гасить этот светодиод.
Основную массу решений вопросов я уже нашел. В основном осталось два вопроса.
1. Как отследить наличие пропущенных СМС и Звонков, и момент когда их прочитают или просмотрят?
2. Как из тела программы выполнять SHELL команды?
Буду благодарен за любую информацию, ссылки по теме, куски кода, готовые решения.
Должен предупредить сразу что в Eclipse я фактически полный ноль, хотя имею не малый опыт кодинга на других языках для других платформ. Да и в модинге готовых АРК и Android-a в целом я тоже не плохо преуспел.
Вообщем возникла необходимость написать маленькую утилитину которая будет отслеживать СМС и Звонки. И при их поступлении будет писать ключ в некий порт - для включения светодиода индикации. И естественно при отсутствии пропущенных СМС и Звонков, гасить этот светодиод.
Основную массу решений вопросов я уже нашел. В основном осталось два вопроса.
1. Как отследить наличие пропущенных СМС и Звонков, и момент когда их прочитают или просмотрят?
2. Как из тела программы выполнять SHELL команды?
Буду благодарен за любую информацию, ссылки по теме, куски кода, готовые решения.
"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."
Re: Пропущенные СМС и Звонки.
Сам задал вопросы. Похоже что самому и отвечать придется...
Вот тут нашел ответ на первый вопрос и вполне изящный http://stackoverflow.com/questions/7621 ... -sms-count
А вот второй вопрос, пока в силе.
Вот тут нашел ответ на первый вопрос и вполне изящный http://stackoverflow.com/questions/7621 ... -sms-count
А вот второй вопрос, пока в силе.
"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."
Re: Пропущенные СМС и Звонки.
по второму вопросу:
Код: Выделить всё
Process process = Runtime.getRuntime().exec("ls -la");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Пропущенные СМС и Звонки.
Спасибо огромное.
Сегодня с сервисами разобрался, с автозапуском, и прерываниями от AlarmManager. Завтра с СМС и Звонками попробую разобраться. А там уже и до shell команд дойдем.
Сегодня с сервисами разобрался, с автозапуском, и прерываниями от AlarmManager. Завтра с СМС и Звонками попробую разобраться. А там уже и до shell команд дойдем.
"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."
Re: Пропущенные СМС и Звонки.
Мне эта тема начинает напоминать "театр одного лица".
Вообщем разобрался я сегодня с СМС и звонками. Приведу кусок кода, мало ли кому еще сгодится...
Что бы этот код работал. В Манифест нужно добавить пермишены.
Вообщем разобрался я сегодня с СМС и звонками. Приведу кусок кода, мало ли кому еще сгодится...
Код: Выделить всё
Cursor c = context.getContentResolver().query(
CallLog.Calls.CONTENT_URI,
null,
CallLog.Calls.TYPE + " = ? AND " + CallLog.Calls.NEW + " = ?",
new String[] { Integer.toString(CallLog.Calls.MISSED_TYPE), "1" },
CallLog.Calls.DATE + " DESC"
);
c.moveToFirst();
Log.d("CALL", ""+c.getCount()); //Пишем в лог количество не принятых звонков.
Uri sms_inbox = Uri.parse("content://sms/inbox");
Cursor d = context.getContentResolver().query(sms_inbox, null, "read = 0", null, null);
Log.d("SMS COUNT", ""+d.getCount()); //Пишем в лог количество не прочитанных СМС.Код: Выделить всё
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_SMS"/>"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."
Re: Пропущенные СМС и Звонки.
Еще раз всем доброго времени суток.
Я написал программку и она работает как нужно.
Но - но есть всегда. Столкнулся с проблемой что программа потребляет непомерно много ресурсов, и соответственно влияет на разрядку аккумулятора.
В общем нужен совет специалиста. Как поубавить аппетит программы до ресурсов?
За основу была взята вот эта программа. ServiceExample и RepeatingAlarmService были немного изменены под свои нужды.
ServiceExample
RepeatingAlarmService
Я конечно понимаю что код скорее всего кривой до безобразия. Но. Я всего 4 дня как пытаюсь кодить на Яве...
При таком коде. При включенном экране, сервис RepeatingAlarmService нагружает процессор не по детски А в чем причина не могу понять... Может кто объяснить?
Я написал программку и она работает как нужно.
Но - но есть всегда. Столкнулся с проблемой что программа потребляет непомерно много ресурсов, и соответственно влияет на разрядку аккумулятора.
В общем нужен совет специалиста. Как поубавить аппетит программы до ресурсов?
За основу была взята вот эта программа. ServiceExample и RepeatingAlarmService были немного изменены под свои нужды.
ServiceExample
Код: Выделить всё
package com.example.LED_Missed_Services;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;
public class ServiceExample extends Service {
public static final int INTERVAL = 10000; // 12 sec
public static final int FIRST_RUN = 1000; // 1 sec
public static int ret = 0;
int REQUEST_CODE = 11223344;
AlarmManager alarmManager;
@Override
public void onCreate() {
ret = 1;
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver br= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Log.d("MyLog", "Screen ON");
startService(); // Если экран включен, запускаем сервис
}else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
Log.d("MyLog", "Screen OFF");
onDestroy(); // Если экран выключен, останавливаем сервис
}
}
};
registerReceiver(br, filter);
super.onCreate();
if (ret==1){ret=0;
startService();
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
if (alarmManager != null) {
Intent intent = new Intent(this, RepeatingAlarmService.class);
alarmManager.cancel(PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0));
}
}
private void startService() {
Intent intent = new Intent(this, RepeatingAlarmService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + FIRST_RUN,
INTERVAL,
pendingIntent);
}
}
Код: Выделить всё
package com.example.LED_Missed_Services;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CallLog;
public class RepeatingAlarmService extends BroadcastReceiver {
public static final String ON = "1";
public static final String OFF = "0";
@Override
public void onReceive(Context context, Intent intent) {
Cursor c = context.getContentResolver().query(
CallLog.Calls.CONTENT_URI,
null,
CallLog.Calls.TYPE + " = ? AND " + CallLog.Calls.NEW + " = ?",
new String[] { Integer.toString(CallLog.Calls.MISSED_TYPE), "1" },
CallLog.Calls.DATE + " DESC"
);
c.moveToFirst();
Uri sms_inbox = Uri.parse("content://sms/inbox");
Cursor d = context.getContentResolver().query(sms_inbox, null, "read = 0", null, null);
if (d.getCount() != 0 || c.getCount() != 0) {
File fileName = null;
fileName = new File("/sys/class/leds/greenled/", "brightness");
try {
FileWriter f = new FileWriter(fileName);
f.write(ON); //Включаем светодиод
f.close();
} catch (IOException e) {
e.printStackTrace();
}
}
else {
File fileName = null;
fileName = new File("/sys/class/leds/greenled/", "brightness");
try {
FileWriter f = new FileWriter(fileName);
f.write(OFF); //Выключаем светодиод
f.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
При таком коде. При включенном экране, сервис RepeatingAlarmService нагружает процессор не по детски А в чем причина не могу понять... Может кто объяснить?
"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."
Re: Пропущенные СМС и Звонки.
он же у вас крутится всё время и конечно будет жрать батарею, я делал приложения что то в виде таймера, ну ничего не поделаешь если всё время приложение работает, увеличивайте время и будет меньше кушать
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Пропущенные СМС и Звонки.
Не приемлемо увеличивать время. Время цикла и так 10 сек...rezak90 писал(а):он же у вас крутится всё время и конечно будет жрать батарею, ..., увеличивайте время
Не очень то приятно, когда прочитал СМС, а светодиод гаснет еще через полминуты...
Собрал аналог на while (true){...Sleep()} (все равно останавливаю сервис при выкл. экране). Даже с циклом в 3 сек., кушает ресурсы в разы меньше.
Но. Сервис постоянно "вываливается" из системы и закрывается, а это тоже не гуд...
"О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг..."