2013-06-12 2 views
2

Мне нужно создать приложение, которое отображает изображение камеры и загружает его в Интернет, где должна быть выполнена некоторая обработка, и возвращается истина/ложь. Я встречаю некоторые вопросы в этом отношении, по которым будет хорошо оценено разъяснение.Ограничения android

1.) Есть ли способ, которым мое приложение может узнать изображение, захваченное камерой андроида? Что я понял отсюда (Android: BroadcastReceiver intent to Detect Camera Photo Taken?), так это то, что мы можем знать, когда на телефон добавляется фотография, будь то через Bluetooth или через захват камеры или иным образом. В любом случае это нормально. Вопрос не в том, что нужно, чтобы мое приложение запускалось в фоновом режиме, чтобы обнаружить изменения в хранилище медиа? Если это так, я могу сделать свое приложение, чтобы открыть камеру, а затем захватить изображение, которое будет более эффективным с точки зрения мощности.

2.) Есть ли ограничение по размеру изображения, которое можно отправить с телефона Android в Интернет? Учитывая, что ОЗУ телефонов Android меньше и т. Д. (Я прошу об этом b'coz, я столкнулся с аналогичной проблемой в другом приложении, где мне нужно было делать такие вещи, как увеличение яркости, контрастности и т. Д. Приложение разбилось, когда изображение размер был больше 10 МБ).

«Я не хочу, чтобы изобретать велосипед и тратить свое время» :)

ответ

2

Чтобы попытаться ответить на ваши вопросы;

1) Регистрация BroadcastReceiver на самом деле не означает, что ваше приложение работает в фоновом режиме 24/7. Скорее всего, вы регистрируете свое приложение в системе, которое будет загружаться и уведомлять его, когда это необходимо. Вам не нужно бояться использовать аккумулятор, имея эти ресиверы, если вы не занимаетесь интенсивной работой с батареями на очень регулярных трансляциях.

2) На самом деле нет ограничений, хотя для вас должно быть разумным, что отправка 100 мб, возможно, через чей-то 3G-соединение, не сделает никого счастливым. Если предыдущее приложение разбилось при попытке отправить 10 МБ, вы, вероятно, сделали это неправильно, как сделать его базой. Я не уверен, какой сервер вы собираетесь загрузить, но вы хотите найти образец кода, который буферизует изображение на сервер небольшими кусками. Также имейте в виду, что на телефоне вы никогда не сможете быть уверены в стабильном соединении.

+0

@Stefan .. 1) Для вещания приемника на работу, не нужно ли приложение работать в состоянии или минимизировать состояние? 2) Предыдущее приложение потерпело крах, потому что я попытался выполнить обработку изображения внутри телефона, что потребовало, чтобы я прочитал данные изображения изображения размером 10 МБ. Надеюсь, вы поняли, что я имел в виду. –

+1

Nop, как только система узнает о вашем ресивере, он обрабатывает вызов для вас. Вам не нужно запускать приложение un background (но вы также можете это сделать, если вам нужно) –

+0

@Plumillon .. так что только когда получатель получает уведомление (в этом случае изменение в медиа-магазине), приложение должно быть открытым. –

4

1.) Существует эффективный механизм в разработке Android, который навален и уже сделан для вас :) Этот механизм называется Intent, и вам просто нужно объявить его в своем приложении, система позаботится о том, чтобы вызова зарегистрированного компонента для вас

2.) нет ограничений здесь, но вы должны быть осторожны, чтобы отправить его в фоновом потоке или услугу (не блокировать поток UI) и обработать соединение и.т.п.

И да, эффективные работы не нужно изобретать колесо!

+0

Просто чтобы добавить к этому, не ошибайтесь «асинхронный поток» для AsyncTask. AsyncTasks НЕ являются местом для каких-либо HTTP-материалов и, конечно, не долгого срока. –

+1

Да, вы абсолютно правы, я не обращался к AsyncTask, я буду перефразировать, чтобы избежать недоразумений :) –

+0

Вы уверены, что хотите отправить изображение? Почему я снова спрашиваю, потому что мне нужно открыть изображение для преобразования в байты, а затем только я могу их отправить. Невозможно открыть/прочитать изображения на телефонах Android, когда они большие, обычно больше 10 МБ, (если мы не используем NDK или что-то, что я до сих пор не мог сделать). Как вы думаете? –

Смежные вопросы