全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2175
推到 Plurk!
推到 Facebook!

如何控制安卓手機的相機進行拍照 ?

尚未結案
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-10-23 17:36:13 IP:118.163.xxx.xxx 訂閱
我沒開發過手機程式, 現在想要寫一支手機程式, 控制安卓手機的相機

Delphi 的範例程式, 好像都是叫出手機內建的拍照介面程式來用, 但我想要自己弄一個介面, 不要用內建的
用 Java 的朋友告訴我, 可以透過 SurfaceView 來顯示相機鏡頭捕捉到的畫面
但我查不到 Delphi 有跟 SurfaceView 相關的指令或物件

Delphi 的範例裏面, 有一個可以使用 TCameraComponent, 然後在 onSampleBufferReady 事件中, 取得鏡頭的畫面顯示在 TImage 元件中
但這樣的做法, 顯示速率實在太慢了, 不適合

請問, 有網友知道如何寫出自己的拍照介面嗎 ?
請提點一下, 或給我一些關鍵字, 我可以自行搜尋, 謝謝 !
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-10-23 23:37:08 IP:60.250.xxx.xxx 訂閱
FMX.CameraComponent Sample
http://docwiki.embarcadero.com/CodeExamples/Seattle/en/FMX.Mobile.CameraComponent_Sample
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-10-24 00:09:13 IP:118.163.xxx.xxx 訂閱
謝謝 ! 這個範例就是我上面提到的: 在 onSampleBufferReady 事件中, 取得鏡頭的畫面顯示在 TImage 元件中
但這樣的做法實在是慢到無法接受的地步

我需要等同或近似 SurfaceView 的顯示速率, 不然沒辦法拿去給客戶使用


===================引 用 NolanLiao 文 章===================
FMX.CameraComponent Sample
http://docwiki.embarcadero.com/CodeExamples/Seattle/en/FMX.Mobile.CameraComponent_Sample
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-10-24 23:48:49 IP:60.250.xxx.xxx 訂閱
給您一個我用 Delphi 10 Seattle 寫 APK 檔案,試試看是否可以達到您要的效果.
CameraView.apk 下載位置:
https://www.dropbox.com/s/yd2kz5t5f2a05l8/CameraView.apk?dl=0
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-10-25 00:57:33 IP:36.235.xxx.xxx 訂閱
謝謝 ! 這應該就是使用 CameraComponent 做出來的效果, 但顯示速率實在太慢了
我的手機是 Galaxy Note 第一代, 是很老舊的手機, 但內建的拍照單元, 顯示相機畫面卻很流暢, 顯然是直接透過 SurfaceView 來顯示的
Delphi 的 CameraComponent 把影像流, 丟到 TImage 去顯示, 速率快不起來
SurfaceView 才是正確的做法, 不知 Delphi 要如何才能調用 SurfaceView ? Google 半天都找不到資料


===================引 用 NolanLiao 文 章===================
給您一個我用 Delphi 10 Seattle 寫 APK 檔案,試試看是否可以達到您要的效果.
CameraView.apk 下載位置:
https://www.dropbox.com/s/yd2kz5t5f2a05l8/CameraView.apk?dl=0
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-10-25 12:03:15 IP:60.250.xxx.xxx 訂閱
強烈建議您試試,,附上程式截圖讓您先看看,可以達到您要的效果.的.
使用 三星 S4 手機測試,.

程式截圖 下載位置:
https://www.dropbox.com/s/oqp3mqfzo62ov14/Capture_20151025.png?dl=0

CameraView.apk 下載位置:
https://www.dropbox.com/s/yd2kz5t5f2a05l8/CameraView.apk?dl=0
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-10-25 15:31:10 IP:60.250.xxx.xxx 訂閱
RAD Studio 10 Seattle 相機鏡頭預覽效能測試
http://nolanliao1965.pixnet.net/blog/post/309017205

手機環境:Android 5.0.1 三星手機 S4
開發環境:Embarcadero Delphi 10 Seattle Version 23.0.20618.2753
作業系統:Windows 10 專業版 (64 位元)

有同好在 KTop 論壇貼文反映 RAD Studio 10 Seattle 相機鏡頭預覽效能
不佳,特別寫一個小小測試程式,以供同好測試鏡頭預覽效能,看看同好
是否發生類似情況,如果有延遲或預覽效能不彰,請同好告知裝置廠牌型
號及作業系統版本,感謝測試,謝謝。

測試程式步驟:
(1)進入測試程式後,點選『相機預覽』按鈕。
(2)進入『相機預覽』頁面後,左右移動測試裝置,觀看『鏡頭預覽』效
能。
(3)點選『打勾』按鈕,進行『鏡頭預覽』儲存動作(備註:僅將預覽圖檔
存至下個頁面中,不會儲存至測試裝置內),或是點選『打叉』按鈕,
返回『相機預覽』按鈕頁面。
(4)進入『拍照相片』頁面,可點選測試裝置『實體返回』按鈕,返回『
相機預覽』按鈕頁面。
(5)在『相機預覽』按鈕頁面,可連續點選兩次『實體返回』按鈕,退出
測試程式。

程式 CameraView.apk 下載位置:
https://www.dropbox.com/s/yd2kz5t5f2a05l8/CameraView.apk?dl=0
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-10-25 21:42:27 IP:36.235.xxx.xxx 訂閱
多謝 !
我是有實際下載使用, 但在 Galaxy Note 第一代的手機上, 顯示速率實在慢到不行
換用 Galaxy Note 4 手機, 快了些, 但還是很不流暢, 比起手機內建的拍照單元, 還是慢得多了
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2015-10-27 07:58:11 IP:36.235.xxx.xxx 訂閱
摸索了幾天, 結論是:
Delphi 提供兩種拍照的方法, 一是 TTakePhotoFromCameraAction , 這是直接叫出手機內建的照相元件程式, 顯示速率當然很快
另一種方法是使用 TCameraComponent , 這方法是不斷取得相機鏡頭的畫面, 然後自行顯示在 TImage 或其他元件內, 顯示速率超慢

除了這兩種方法, Delphi 沒有其他相機相關的元件了
因此, 要達成我的目的, 應該只剩直接調用 Java 物件的途徑了,
我完全沒接觸過這個課題, 如果網友有調用 Java 的 SurfaceView 及 Camera 等等物件的經驗, 敬請不吝指導一二, 謝謝 !
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2015-10-28 16:02:55 IP:1.165.xxx.xxx 訂閱
我在設法用 Delphi 調用 Java 的 Camera 物件來使用, 我從以下的網址抓了一堆的 Java 物件的 Delphi 宣告檔 :
https://github.com/FMXExpress/android-object-pascal-wrapper
並處理了 circular reference 的問題, 終於可以 use 這些 Java 元件, 並 compile 成功
原以為勝券在握, 想不到在執行時, 要 Create 這些物件, 卻發生了 class Segmentation fault 的錯誤
我宣告了一個 Camera : JCamera; 元件
以 Camera:=TJCamera.JavaClass.open; 指令打算建立這個物件的實例, 卻無法成功( class Segmentation fault ),
實在不知該怎麼樣 Create 這個物件 ?
我看在別人寫的 Java 的程式中, 只要執行 camera = Camera.open(); 就可以建立這個物件, 為什麼 Delphi 中不行 ?
是不是還有其他的步驟 ?

懇請網友協助, 幫忙找出問題
專案程式碼在此 http://robowang.net/NativeCamera.rar , 方便測試, 謝謝 !
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#11 引用回覆 回覆 發表時間:2015-12-31 14:32:14 IP:49.82.xxx.xxx 訂閱
请问解决了吗?我也在弄摄像头
------
The empty vessels make the greatest sound.
boson
中階會員


發表:71
回覆:154
積分:85
註冊:2004-07-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2015-12-31 14:44:27 IP:1.165.xxx.xxx 訂閱
無法解決

我可以用 Delphi 建立 Camera , 可以建立 SurfaceView, 但不知道要怎麼樣讓 SurfaceView 顯示在 Delphi 的元件上
後來我放棄了
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#13 引用回覆 回覆 發表時間:2016-01-02 07:47:23 IP:49.82.xxx.xxx 訂閱
我用官方的demo,发现也不行,速度太卡
------
The empty vessels make the greatest sound.
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#14 引用回覆 回覆 發表時間:2016-01-03 16:13:09 IP:60.250.xxx.xxx 訂閱
RAD Studio 10 Seattle - Delphi 相機預覽功能
相機預覽功能,預覽影像不延遲不卡卡,提供 APK 下載,歡迎同好下載測試。

YouTube 操作示範相機預覽功能:
https://www.youtube.com/watch?v=O4N0uXTA2ZY

CameraView.apk『DropBox』檔案下載:
https://www.dropbox.com/s/m5lgntccgxg6dd8/CameraView.apk?dl=0
系統時間:2017-10-20 4:14:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!