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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
#1

Отлов работы диктофона - Программирование Android

10.05.2013, 14:34. Просмотров 1374. Ответов 18
Метки нет (Все метки)

Приложение работает в фоновом режиме, и при включении диктофона должна выводить уведомление.
вот кусок кода:
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
void mainTask() {
        Runnable runnable = new Runnable() {
             
            @Override
            public void run() {
                int k=0;
                int indikator=0;
                Log.d(LOG_TAG, "onWork");
                indikator = mrec.getState();
                if (indikator==AudioRecord.STATE_INITIALIZED){
                    if (k==0){
                        Log.d(LOG_TAG, "TAKE IT");
                        createNotification();
                        addToDataBase();
                    
                    k=1;
                    }
                }
                else {
                    k=0;
                }
                mainTask();
            }
        };
        mHandler.postDelayed(runnable, 1000);
    }
Работа диктофона не палится, есть идеи почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 14:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отлов работы диктофона (Программирование Android):

Ошибка записи диктофона - Программирование Android
В чем шутка юмора был рабочий код прошло 4 дня и перестал работать. Запись идет в потоке. На реальном устройстве не выдает ошибок. ...

Запуск внешней программы и отлов ошибок ее работы - C#
Я запускаю внешнюю программу. Она вылетает по ошибке. Можно отследить появление ошибки, убить программу и запустить её по новой.

AVS Audio запись с диктофона - Софт
Скажите, как отредактировать запись с диктофона, мне нужно сделать по громче голос собеседника, как это сделать? И еще вопрос, файл...

Форматирование диктофона, диск защищен от записи - Носители информации
Здравствуйте, уважаемые знатоки. Есть у меня диктофон Olympus VN-712PC При включении в ПК, ОС просит его форматировать, но при попытке...

Нужны драйвера от диктофона toshiba dmr 420 - Компьютерное железо
Люди, хоть и не в тему - допоможите! не найду дрова для диктофона, а без дров не получается открыть файлы - система не видит. Кто может...

Нужен рабочий исходник простого диктофона (через микрофон) - Delphi
дайте плиз ссылку на готовую программу :sorry: заранее спс Добавлено через 25 минут с исходником

18
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 15:35 #2
Цитата Сообщение от Акыл Посмотреть сообщение
Работа диктофона не палится, есть идеи почему?
Скорее всего, потому что объект "Диктофон" не создан еще.

Какой статус тебе выдает вместо ожидаемого? Думаю что это поможет решить проблему быстрее.
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 15:41  [ТС] #3
диктофон создан в методе onCreate():
Java
1
2
3
4
bufferSize= AudioRecord.getMinBufferSize(samplerate,AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT)*2;
        mrec=new AudioRecord(AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT, bufferSize);
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 15:44 #4
Цитата Сообщение от Акыл Посмотреть сообщение
диктофон создан в методе onCreate():
А какой статус? Может быть он некорректно создан?
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 15:45  [ТС] #5
не могу его получить, секунду
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 15:49 #6
Еще необходимо проверить сам bufferSize, возможо в нем проблема. Я не пойму зачем ты его умножаешь на 2. Что это за magic number?

Выполни еще такие проверки

Java
1
2
3
4
5
6
7
8
9
if(bufferSize == AudioRecord.ERROR) {
    Log.d("getMinBufferSize returned ERROR");
    return;
}
    
if(bufferSize == AudioRecord.ERROR_BAD_VALUE) {
   Log.d("getMinBufferSize returned ERROR_BAD_VALUE");
   return;
}
после того как получил значение для него.
0
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 16:01  [ТС] #7
Java
1
2
3
4
5
6
7
8
9
10
11
if(bufferSize == AudioRecord.ERROR)
        {
            Log.d(LOG_TAG, "getMinBufferSize returned ERROR");
            return;
        }
        
        if(bufferSize == AudioRecord.ERROR_BAD_VALUE)
        {
            Log.d(LOG_TAG, "getMinBufferSize returned ERROR_BAD_VALUE");
            return;
        }
Ничего не вернули

Добавлено через 2 минуты
05-10 11:57:12.034: E/AudioRecord(936): Could not get audio input for record source 1
05-10 11:57:12.034: E/AudioRecord-JNI(936): Error creating AudioRecord instance: initialization check failed.
2 ошибки в логах
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 16:46 #8
Если не жалко скинь проект полностью, я гляну. Что там у тебя не так. Как видишь мое предположение оказалось верным, AudioRecord создавался не правильно.
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 16:51  [ТС] #9
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 17:10 #10
Ну во первых ты не добавил в Manifest
XML
1
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Теперь AudioRecord создается верно, но стала сыпаться база данных. Сейчас еще глубже копну.
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 17:40  [ТС] #11
да, бд хз
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 17:46 #12
Придется тебе поправить несколько методов:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void onCreate() {
        super.onCreate();
 
        Log.d(LOG_TAG, "onCreate");
 
        sqh = new DataBaseFunc(this);
        sqdb = sqh.getWritableDatabase();
 
        mHandler = new Handler();
 
        bufferSize = AudioRecord.getMinBufferSize(samplerate,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT);
 
        mrec = new AudioRecord(AudioSource.MIC, samplerate,
                AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT,
                bufferSize * 10);
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void addToDataBase() {
        Log.d("TAG", ":: addToDataBase :: ");
        String insertQuery;
        ActivityManager am = (ActivityManager) this
                .getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
        ComponentName componentInfo = taskInfo.get(0).topActivity;
 
        Log.d("TAG", componentInfo.getPackageName());
 
        insertQuery = "INSERT INTO " + DataBaseFunc.TABLE_NAME + " ( "
                + DataBaseFunc.TIME + ", " + DataBaseFunc.PACKAGE
                + " ) VALUES ( '" + getTimeAndDate() + "', '"
                + componentInfo.getPackageName() + "');";
        sqdb.execSQL(insertQuery);
    }
Все теперь работает как и должно, в базу пишет.
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 17:48  [ТС] #13
чувак, спасибо)

Добавлено через 7 секунд
большое)
0
jumb0jet
16 / 16 / 0
Регистрация: 08.05.2013
Сообщений: 40
10.05.2013, 17:49 #14
Но так ты не сможешь отловить когда был запущен диктофон. Я вообще не до конца понял задачу. Ты сам, после того как создал объект AudioRecord можешь производить запись, но я не уверен что так можно перехватить какой-то другой диктофон.
1
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
10.05.2013, 18:01  [ТС] #15
да я уже это понял

Добавлено через 2 минуты
А если начать запись на диктофон, т.е. начинать и останавливать запись каждые 0,5 сек. можно что ли бо получить?
0
10.05.2013, 18:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2013, 18:01
Привет! Вот еще темы с ответами:

Выбор диктофона для качественной записи голоса в разных условиях - Бытовая электроника
Решил купить себе диктофон. Однако зашел в магазин, там столько диктофонов что я просто растерялся, решив сначала &quot;порыть&quot; и поискать для...

Отлов рисунка - C++
по экрану &quot;бегает&quot; рисунок, его положение определяется программой, необходимо считать из программы координаты этого рисунка. Не подскажите...

Отлов двойников - SQL Server
Доброго времени суток! Задавал вопрос в форуме по Access'у, но не получил ответа:-(. Может здесь кто знает! Просветите меня в таком...

Отлов исключений - C++ Builder
короче открываю запускаю программу , работает она нормально. Затем открываю фаил через прогу. И вылетает исключение про pointer и ошибку...


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

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

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