2013-06-12 53 views
2

我需要構建一個應用程序,該應用程序將攝像頭圖像上傳到網絡,在該網絡中進行一些處理並返回true/false。我在這方面遇到了一些需要澄清的問題。Android的侷限性

1.)有沒有什麼辦法可以讓我的應用知道android攝像頭捕獲的圖像? 我從這裏得知的(Android: BroadcastReceiver intent to Detect Camera Photo Taken?)是我們可以知道每當一張照片被添加到手機上時,無論是通過藍牙還是通過相機捕捉或其他方式。 任何方式都很好。 問題是,是否需要我的應用程序在後臺運行才能檢測到媒體存儲區中的更改?如果是這樣的話,我可以讓我的應用程序打開相機,然後捕獲圖像,這將在功率方面更高效。

2.)是否有任何限制,可以從Android手機發送到網絡的圖像的大小?考慮到Android手機的內存不多等等(我問這個b'coz我遇到了類似的問題,在另一個應用程序中,我需要做的事情,如增加亮度,對比度等。該應用程序崩潰時,圖像大小大於10MB)。

「我不想推倒重來,浪費我的時間」 :)

回答

2

要嘗試回答你的問題;

1)註冊BroadcastReceiver並沒有真正轉化爲讓您的應用程序在後臺全天候運行。這就像你在系統中註冊你的應用程序,它會在需要時啓動並通知它。使用這些接收器時,您不必擔心使用電池,只要您不會在非常規的廣播中使用電池密集型產品。

2)沒有任何限制,儘管發送100mb,可能通過某人的3G連接,不會讓任何人感到滿意。 如果以前的應用程序在嘗試發送10MB時崩潰,則可能是將其製作爲base64字符串的方式錯誤。我不確定要上傳它的服務器類型,但是您希望找到一些代碼示例,將圖像緩存到服務器中。還請記住,在手機上,您永遠無法確定穩定的連接。

+0

@Stefan .. 1)對於廣播Reciever工作,應用程序不需要處於運行狀態或最小化狀態? 2)以前的應用程序崩潰,因爲我試圖在手機內部進行圖像處理,這需要我讀取尺寸大於10MB的圖像的圖像數據。我希望你明白我的意思。 –

+1

當系統知道你的Receiver後,它會處理你的呼叫。你不必運行你的應用程序背景(但你也可以如果你需要) –

+0

@Pumumillon ..所以只有當接收器收到通知(在這種情況下媒體商店的變化),應用程序需要我想是打開的。 –

4

1.)在Android開發中有效的這種機制已經爲您加載並已經完成:) 這種機制被稱爲Intent,您只需在您的應用程序中聲明它,系統負責打電話給你註冊的組件爲你

2)這裏沒有限制,但是你必須要小心與後臺線程或服務(不阻塞UI線程發送)和手柄連接超時等

而且高效的作品不需要重新發明輪子!

+0

只是爲了增加這一點,不要誤認爲AsyncTask的「異步線程」。 AsyncTasks不是任何HTTP的東西,當然不是長時間運行的東西。 –

+1

是的,你是完全正確的,我沒有提到AsyncTask,我會改說,以避免誤解:) –

+0

你確定圖像發送?爲什麼我再次問是因爲,我需要打開圖像轉換爲字節,然後只能發送它們,它是不可能打開/閱讀Android手機中的圖像,當他們很大,通常大於10MB,應用程序崩潰(除非我們使用NDK或我迄今爲止無法完成的事情)。你怎麼看? –