Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Задачка не очень большая, но емкость есть. Лучший

Удачи всем нам!
Предлагаю умникам и умницам, пока бесплатно, потрудиться на благо нашей страны.
Задачка не очень большая, но емкость есть.
Лучший вариант решения, и соответственно его автор, примет участие в федеральном проекте(естественно вознаграждение не хилое, но это позднее.)
Сразу оговорюсь: проект не коммерческий, но очень перспективный. 
Есть задача: подготовить ряд программ, для объединения в единый комплекс(действующий пока для 5-10 примеров).
Большая просьба: посмотри там, сделай сам и прочее, не посылать.
Мне нужны коллеги и партнеры!

Увидеть задачу можно здесь: 


Ответ:
хаха вряд ли получится)
Вопрос: Есть ли API на андроид, чтобы я мог отклонить входящий звонок, получать инфу о звонке

Очень нужно, если есть такая документация по API до дайте ссылку, хочу написать прогу которая отклоняет мои нежелательные номера через мою прогу.
Ответ: Harterbreed, посмотри в интеренте про TelephonyManager
Вопрос: Распознавание речи и клавиатура - время ожидания - необычное поведение

Столкнулся с необычной проблемой. Использую распознавание речи.. То есть при нажатии кнопки открывается окно диктования и после распознавания в editText выводятся результаты. Все работает и распознает, НО говорить нужно быстро и если чуть замешкался то распознавание прерывается и в editText попадает то что успел надиктовать. Если диктовать быстро не задумываясь (без пауз) то можно диктовать большой текст. Если нажать на editText то открывается стандартная клавиатура и при нажатии на кнопку микрофона (в клавиатуре) можно диктовать хоть по одному слову с длинными паузами между словами и очень долгим ожиданием в конце. То есть идеально, НО через клавиатуру а на прямую так почему то не сделать?

Фактически вся проблема могла бы решиться использованием этих переменных

Java
1
2
3
4
i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, Long.valueOf(10000));
 i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(10000));
 i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(10000));
   
но в их описании (насколько я понял) говорится что они могут не оказывать никакого влияния и они действительно не влияют .... их значения игнорируются.
Но в клавиатуре (проверил на двух клавиатурах) диктовка очень медленная, то есть в клавиатурах это как то реализовано.

Как сделать медленную диктовку (как в клавиатуре) по нажатию кнопки button (то есть без клавиатуры)?

Добавлено через 15 часов 9 минут
Внешне окно диктовки одинаковое что при нажатии кнопки button , что при диктовке через клавиатуру
а поведение разное...
Ответ: Все таки это два разных варианта распознавания , тот что используется в клавиатуре немного отличается и внешне но самое главное допускает диктовку с очень большими паузами. Теперь самая главная проблема как прикрутить такое же распознавание как у клавиатур к editText без использования клавиатуры
Вопрос: Разместить 16 квадратов одним большим

Нужно из 16 квадратов образовать поле. Вроде пятнашек. У кого-то есть шаблончик для layout? Чтоб покрасивей, а то я в верстке и дизайне не очень пока... нужно чтоб красиво выглядело, а у меня все в белых стыках.... в общем помогите из 16 имейдж вью сделать красивый квадрат.
Ответ: Так как вопрос про квадратные лаяуты поднимается не первый раз, я немного поднапрягся и сделал.
Только xml, никакого кода.

Кое какие строки добавлены для наглядности и я немного попытался отрефакторить xml (стили).
Так как непонятно из чего должны состоять те 16 квадратов, я решил сделать их кнопками. В разметке будет показан отдельно сам квадратный лаяут и в него includ-ом включен лаяут с кнопками (сильно не рефакторил).

Что бы понять ход моей мысли, попытайтесь не читать по диагонали, а делать по пунктам
Итак:

1. в файл build.gradle подключаем PercentFrameLayout
XML
1
compile 'com.android.support:percent:23.1.1'
2. Приготовим стиль для наших кнопок. В файл values/styles.xml добавляем
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
    <style name="MyAwesomeButton" parent="@style/Widget.AppCompat.Button.Borderless">
        <item name="android:layout_weight">1</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:background">#FFF</item>
        <item name="android:layout_margin">1dp</item>
    </style>

Цвет фона и margin добавил для наглядности, их можно убрать потом.

3. Теперь важно, внимательно! В папке res/values создаем файл square_layout_style.xml и копируем туда эти строки
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <style name="SquareStyle">
        <item name="layout_widthPercent">@fraction/hundred_percent</item>
        <item name="layout_aspectRatio">@fraction/hundred_percent</item>
 
        //эти строчки можно убрать, они для наглядности
        <item name="android:background">#5a7</item>
        <item name="android:layout_gravity">center</item>
    </style>
</resources>


4. Тоже важно! Рядом с папкой values надо создать папку для горизонтальной ориентации, назовем ее values-land

5. Копируем туда файл square_layout_style.xml (который мы создали на прошлом шаге в папке values)
Дожно получиться так
Кликните здесь для просмотра всего текста


6. Открываем файл square_layout_style.xml из папки values-land и немного меняем содержимое, а точнее одну строку, но лучше просто копируем код
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <style name="SquareStyle">
        <item name="layout_heightPercent">@fraction/hundred_percent</item>
        <item name="layout_aspectRatio">@fraction/hundred_percent</item>
 
        //эти строчки можно убрать, они для наглядности
        <item name="android:background">#5a7</item>
        <item name="android:layout_gravity">center</item>
    </style>
</resources>

Становится очевидно что разница только в том что для ландшафтной ориентации мы задаем размер лаута 100% по высоте. А в файле values для портретной ориентации мы задали 100% по ширине.

7. Теперь задаем сами размеры. В папке values, создаем файл fractions.xml и копиреум туда этот код
Кликните здесь для просмотра всего текста
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <fraction name="hundred_percent">100%</fraction>
</resources>


8. И напоследок файл с 16-ю кнопками. Там ничего интересного, но без него не взлетит.
Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="1" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="2" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="3" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="4" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="5" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="6" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="7" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="8" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="9" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="10" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="11" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="12" />
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="13" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="14" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="15" />
 
        <Button
            style="@style/MyAwesomeButton"
            android:text="16" />
 
    </LinearLayout>
 
</LinearLayout>


10. Чуть не забыл )
Разметка активити, обычно это файл activity_main.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <FrameLayout
        style="@style/SquareStyle">
 
        <include layout="@layout/sixteen_squares"/>
 
    </FrameLayout>
 
</android.support.percent.PercentFrameLayout>

Без разницы где в разметке будет эта конструкция. Для простоты я убрал все остальные лаяуты и тулбар, но это не принципиально.

У меня в студии превьюшка не всегда перерисовывается, поэтому либо нажимаем refresh либо смотрим на в превью, а на устройстве.

11. PROFIT
Вопрос: Работа с большим числом файлов

Господа, подскажите правильное направление.
Необходимо работать с большим числом мелких текстовых файлов(несколько тысяч, размер порядка пары кБ), вопрос как их лучше всего хранить?
Что если регистрировать все файлы в SQLite базе данных и например по хешу раскидывать по архивам? Навигация идет по базе данных, а когда нужно достать какой-то файлик, ищем по хешу архивчик и достаем из него нужное.
Сама база SQLite полагаю будет работать медленно и занимать много места, если я буду хранить эти текстовые данные в ней?
Может есть готовые библиотеки, которые развернут свою файловую систему внутри одного файла?
Или вообще не думать об этом и надеяться на файловую систему OS?
Ответ:
Цитата(Mikel @  13.1.2015,  18:54 )
несколько тысяч, размер порядка пары кБ

это несколько мегабайт.... засунь все в БД и пользуй ей
Цитата(Mikel @  13.1.2015,  18:54 )
Может есть готовые библиотеки, которые развернут свою файловую систему внутри одного файла?

есть , но зачем усложнять?
Вопрос: В чем делать и как тестить приложения на ОЧЕНЬ слабой машине?

Есть на работе слабенький ноут и время, ну как слабенький, для андройд студио или еклипс, будет тяжко, сожрет всю оперативу. Да и с эмуляцией процессов на AMD, бяда, если только на дорогих процах АМД, т.к. пробовал на похожей машинке устанавливал андройд студио и эмулятор к нему, и вызывало ошибку, т.к. процессор не поддерживает эмуляцию. В следствии вопрос, где (в какой студии или аналог нотепада что ли) пробовать создавать приложения под андройд, знаю верстку да и суть приложений понял немного, экраны эти..., когда учился на хорошем компе. Есть ли что нибудь похожее, но менее ресурсоемкое, тестить может буду на своем телефоне.
Ответ: Вариант 1. все писать в блокноте, а потом ручками это все собирать(На хабре была подробная статья по этому поводу)
Вариант 2. тестировать приложение не на эмуляторе, а на живом телефоне(для того что бы собрать приложение эмулятор не нужен)
Вопрос: Подскажите хороший аппарат до 7000 р с 4G

Подскажите хороший аппарат до 7000 р с 4G
Ответ: Такие вопросы решаются просто. Идете в магазин с наибольшим выбором аппаратов и смотрите все что есть, с первоначальным предпочтением по известным брендам. Я себе таким образом купил смартфон за 5,5 тыс рублей и не сколько не жалею. Хотя мог бы и за 20 купить, только подумал, что вроде как не за чем.
Вопрос: Подскажите хороший ман для работы с Yamdex Maps

Добрый день.

Поделитесь ссылкой на хороший работающий мануал по встраиванию Yamdex Maps в Android приложение.
Или лучше гугловыми картами пользоваться?

Спасибо. 
Ответ:
Цитата(TomashBraun @ 16.10.2016,  13:36)
Начнем с того, что Yamdex Maps не существует. Может ты имел ввиду Yandex Maps. Пользуйся HERE для android и будет тебе счастье. ))

да HERE это самое оптимальное тут, без проблем можно бесплатно скачать.
Вопрос: Правильное проектирование баз данных при очень частом обращении

Пишу мессенджер и в истории переписок в адаптере очень часто вызывается последнее сообщение для каждого чата и база данных садится, какие могут быть идеи для проектирования БД при очень частом обращении к ней?
Ответ:

Не по теме:

Точно! Когда много программирую начинаю допускать нелепые ошибки, у меня класса модели нет!


Ну а вообще с ContentProvider неплохие примеры есть, но для моей задачи хватит и оптимизации
Вопрос: Есть некая библиотека, сделана в QT. Как скомпилить под Андроид с использованием qt-lib?

Какие изменения нужно сделать в исходнике для компиляции под Андроид?
в либе используются классы:
#include <QString>
#include <QByteArray>
#include <QVector>
...и многие другие. В связи с чем, не хотелось бы всё переделывать на чистые плюсы.
Если прописать
#include "/home/user/ndkr10e/platforms/android-21/arch-arm/usr/include/jni.h"
то очень много ошибок компилер выдает:
/home/user/ndkr10e/platforms/android-21/arch-arm/usr/include/jni.h:776: error: '__NDK_FPABI__' does not name a type
__NDK_FPABI__ \
^

в таком духе.
EDIT: библиотека изначально строилась под Ubuntu.
Ответ: Со сборкой разобрался. Теперь возникла трудность с обратной связью:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
   public void onResult(String value)
    {
        Log.i("Log", "result from native code");
    }
- этот метод вызывается библиотекой. Пока его тип был void - оно работало, но с аргументами АПК падает (FATAL SIGNAL)
попытка выглядит вот так:
Код C++ (QT)
1
2
3
4
5
6
7
8
        jclass cls2 = env->FindClass("com/myclass/native/TRX");  // try to find the class
        jmethodID mid = env->GetMethodID(cls2, "onResult", "(Ljava/lang/String;)V");  // find method;
        usleep(1000*1000);
        jobject javaObjectRef = env->NewObject(cls2, mid);
        char *buf = (char*)malloc(10);
        strcpy(buf, "1234567890");
        jstring jstrBuf = (env)->NewStringUTF(buf);
        env->CallVoidMethod(javaObjectRef, mid, jstrBuf);
Как исправить?