Qt for Android调用原生接口打开相机拍照并存储照片
生活随笔
收集整理的這篇文章主要介紹了
Qt for Android调用原生接口打开相机拍照并存储照片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Qt開發Android應用,需求是通過調用Android原生接口去打開系統相機拍照,并返回拍攝的照片。原理很簡單,現在Java文件中寫android代碼調用相機,拍照后將將相片存儲在SD卡,然后在C++ 端調用。
首先,如果是一個新創建的Qt工程,需要創建一個AndroidManifest.xml文件,創建過程不再贅述,然后創建一個Java的類,繼承于
定義一個公有的靜態函數
/***打開系統相機拍照并返回相片*/public static void openSystemCamera(QtActivity activity){try {Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");//開始拍照m_instance.mPhotoPath = m_instance.getSDPath()+"/picture/";//+ m_instance.getPhotoFileName();//設置圖片文件路徑,getSDPath()和getPhotoFileName()具體實現在下面File f = new File(m_instance.mPhotoPath);if(!f.exists()){f.mkdirs();}m_instance.mPhotoPath += m_instance.getPhotoFileName();m_instance.mPhotoFile = new File(m_instance.mPhotoPath);if (!m_instance.mPhotoFile.exists()) {try {if(!m_instance.mPhotoFile.createNewFile()) {System.out.println("File already exists");}} catch (IOException ex) {System.out.println(ex);}}intent.putExtra(MediaStore.EXTRA_OUTPUT,//Intent有了圖片的信息Uri.fromFile(m_instance.mPhotoFile));activity.startActivityForResult(intent, CAMERA_RESULT);//跳轉界面傳回拍照所得數據} catch (Exception e) {e.printStackTrace();}}public String getSDPath(){File sdDir = null;boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); //判斷sd卡是否存在if(sdCardExist){sdDir = Environment.getExternalStorageDirectory();//獲取目錄}return sdDir.toString();}private String getPhotoFileName() {Date date = new Date(System.currentTimeMillis());SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");return dateFormat.format(date) +".jpg";}總結
以上是生活随笔為你收集整理的Qt for Android调用原生接口打开相机拍照并存储照片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 判断一个点是否落在三角形内(算法)
- 下一篇: Qt 调用 Windows 接口实现窗口