新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Android嵌入式平臺傳感器應用開發水平儀

        基于Android嵌入式平臺傳感器應用開發水平儀

        作者: 時間:2012-04-16 來源:網絡 收藏

        //繪制左面方框中的刻度

        canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2-7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2-7,paint);canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2+7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2+7,paint);

        //繪制下面方框中的刻度

        canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-10,xia1_Y+xiaBitmap1。getHeight()/2-20,xia1_X+xiaBitmap1。getWidth()/2+20,xia1_Y+xiaBitmap1。getHeight()/2+10,paint);

        canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-20,xia1_Y+xiaBitmap1。getHeight()/2-10,xia1_X+xiaBitmap1。getWidth()/2+10,xia1_Y+xiaBitmap1。getHeight()/2+20,paint);

        //中間圓圈中的刻度(小圓)

        RectFoval=newRectF(zhong1_X+zhongBitmap1。getWidth()/2-10,zhong1_Y+zhongBitmap1。getHeight()/2-10,zhong1_X+zhongBitmap1。getWidth()/2+10,zhong1_Y+zhongBitmap1。getHeight()/2+10);

        canvas。drawOval(oval,paint);//繪制基準線(圓)

        }

        在該方法中,根據相應圖片的X、Y坐標將圖片繪制到屏幕中,在圖片的繪制過程中,同樣動態根據相應圖片的寬和高計算需要繪制到的位置坐標,以提高程序的可維護性與靈活性。

        6相關XML文件的編寫

        完成了用于顯示儀界面的自定義View的Java代碼開發之后,就應該對布局XML資源文件進行編寫,以將之前開發的自定義View添加到用戶界面中。打開項目中res/layout目錄下的main。xml,在其中編寫如下的xml代碼:

        ?xmlversion=1。0encoding=utf-8?>!--編碼格式-->

        android:orientation=vertical

        android:layout_width=fill_parent

        android:layout_height=fill_parent>!--線性布局-->

        android:id=@+id/mainView

        android:layout_width=fill_parent

        android:layout_height=fill_parent/>!--自定義

        View-->

        /LinearLayout>

        編寫完布局文件main。xml后,還需要開發字符串資源文件strings。xml。打開res/values下的strings。xml文件,編寫如下的代碼:

        ?xmlversion=1。0encoding=utf-8?>!--編碼方式-->

        在該文件中只是對字符串app_name進行了定義,在開發應用程序時,將字符串資源統一定義到一個xml文件中是一個很好的編程習慣。

        編寫完上述的xml資源文件后,為了調試還需要為此應用程序添加網絡權限,打開項目根目錄下的Manifest。xml文件,在標簽之前加入下列代碼:

        上述代碼的功能為此應用程序添加了訪問網絡的權限。

        7Activity類的開發

        完成了自定義View以及XML文件的開發后,就可以對用戶界面對應的Activity類進行開發,首先開發該類的代碼框架,其代碼如下:

        packagewyf。ytl;//聲明所在包

        importandroid。app。Activity;//引入相關類

        importandroid。hardware。SensorListener;

        importandroid。hardware。SensorManager;

        importandroid。os。Bundle;

        publicclassSPYActivityextendsActivity{//繼承ActivityMainViewmv;//主View

        intk=45;//靈敏度

        //SensorManagermySensorManager;

        //真機

        SensorManagerSimulatormySensorManager;//測試時@Override

        publicvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);

        setContentView(R。layout。main);//設置當前用戶界面

        mv=(MainView)findViewById(R。id。mainView);

        mySensorManager=SensorManagerSimulator。getSystemService(this,SENSOR_SERVICE);//測試時

        mySensorManager。connectSimulator();//測試時

        //mySensorManager=(SensorManager)

        //getSystemService(SENSOR_SERVICE);//真機

        }

        privatefinalSensorListenermSensorLisener=newSensorListener(){//監聽

        //器類

        …//該處省略了部分代碼,將在后面進行介紹

        };

        @Override

        protectedvoidonResume(){//添加監聽

        mySensorManager。registerListener(mSensorLisener,SensorManager。SENSOR_ORIENTATION);

        super。onResume();

        }

        @Override

        protectedvoidonPause(){//取消監聽

        mySensorManager。unregisterListener(mSensorLisener);

        super。onPause();

        }

        }

        上述代碼中除了重寫了onCreate方法外,還重寫了onRe-sume以及onPause方法為mySensorManager添加或刪除監聽,并且定義了監聽器類mSensorLisener。

        在完成了Activity類代碼框架的開發后就可以對其中的監聽類進行開發,首先給出監聽器類的代碼框架:

        privatefinalSensorListenermSensorLisener=

        newSensorListener(){//傳感器監聽器類

        publicvoidonSensorChanged(intsensor,float[]values){…//該處省略了部分代碼,將在后面進行介紹

        }

        @Override

        publicvoidonAccuracyChanged(intsensor,intaccuracy){}

        publicbooleanisContain(intx,inty){//判斷點是否在圓內

        inttempx=(int)(x+mv。zhongBitmap2。getWidth()/2。0);

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永康市| 东方市| 威信县| 桃源县| 和政县| 环江| 海门市| 定南县| 聊城市| 普宁市| 汉中市| 南岸区| 怀化市| 林州市| 海伦市| 和静县| 昌都县| 沁阳市| 伊川县| 云阳县| 吉安县| 定日县| 长治县| 古丈县| 满城县| 湟中县| 城固县| 明光市| 巴彦淖尔市| 青龙| 连平县| 怀仁县| 巴中市| 长春市| 太白县| 邯郸市| 集安市| 五常市| 蒙阴县| 宝丰县| 津市市|