詳細(xì)說明Android編程環(huán)境搭建過程
下面我們一起看一下在攝像頭應(yīng)用中如何使用這個接口,首先看一下在Android編程環(huán)境中的onCreate方法,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
前的智能手機(jī)擁有很多強(qiáng)大的功能,例如攝像頭、GPS和無線上網(wǎng)等,現(xiàn)在是我們開始充分使用這些功能的時(shí)候了。在本篇文章中我們一起學(xué)習(xí),如何在谷歌Android編程環(huán)境中,以最簡單的方式實(shí)現(xiàn)谷歌Android攝像頭拍照。
- super.onCreate(icicle);
- getWindow().setFormat(PixelFormat.TRANSLUCENT);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.camera);
- mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
- mSurfaceHolder = mSurfaceView.getHolder();
- mSurfaceHolder.addCallback(this);
- mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- }
在本文示例中,我們需要用到兩個文件:布局文件和Activity文件。數(shù)日前,Android編程環(huán)境(代號cupcake)新版發(fā)布,在安全方面有諸多改進(jìn)。其中之一與攝像頭權(quán)限控制有關(guān)。在此之前,你能夠創(chuàng)建無需用戶許可就可實(shí)現(xiàn)拍照的應(yīng)用。現(xiàn)在該問題已被修復(fù),如果你想在自己的應(yīng)用中使用攝像頭,需要在AndroidManifest.xml中增加以下代碼:
- super.onCreate(icicle);
- getWindow().setFormat(PixelFormat.TRANSLUCENT);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.camera);
- mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
- mSurfaceHolder = mSurfaceView.getHolder();
- mSurfaceHolder.addCallback(this);
- mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- }
這是開發(fā)工作的基礎(chǔ),也就是說我們希望在應(yīng)用程序中增加多少輔助性元素,如攝像頭各種功能按鈕等。在本文中我們采取最簡方式,除了拍照外,沒有多余攝像頭功能。下面我們一起看一下本文示例將要用到的布局文件“camera_surface.xml”。
小提示:記住不要在資源文件名稱中使用大寫字母,如果你把該文件命名為“CameraSurface.xml”,會給你帶來不必要的麻煩。該布局非常簡單,只有一個LinearLayout視圖組,在它下面只有一個SurfaceView視圖,也就是我們的攝像頭屏幕。
該方法讓攝像頭做好拍照準(zhǔn)備,設(shè)定它的參數(shù),并開始在Android編程環(huán)境屏幕中啟動預(yù)覽畫面。我使用了一個“semaphore”參數(shù)來防止沖突:當(dāng)mPreviewRunning為true時(shí),意味著攝像頭處于激活狀態(tài),并未被關(guān)閉,因此我們可以使用它。
通過這個方法,我們停止攝像頭,并釋放相關(guān)的資源。正如大家所看到的,我們在這兒設(shè)置mPreviewRunning為false。以此來防止在surfaceChanged方法中的沖突。原因何在?因?yàn)檫@意味著我們已經(jīng)關(guān)閉了攝像頭,而且我們不能再設(shè)置其參數(shù)或在攝像頭中啟動圖像預(yù)覽。
【編輯推薦】