1. 程式人生 > >android 實現手機方向識別

android 實現手機方向識別

//自定義導航圖示
private BitmapDescriptor mIconLocation;
//自定義感測器implements SensorEventListener
private MyOrientationListener myOrientationListener;
//把監聽的x方向的值儲存到這裡
private float mCurrentX;

    //初始化圖示
        mIconLocation = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
        //初始化回撥介面
        myOrientationListener = new
MyOrientationListener(getApplicationContext()); //設定回撥介面 myOrientationListener.setOnOrientationListener(new OnOrientationListener() { @Override public void OnOrientationChanged(float x) { // TODO Auto-generated method stub //回撥介面的值存入mCurrentX
mCurrentX=x; } });

在Activity的生命週期裡面實現 與 方向識別的生命週期同步

start方法裡面

    //方向識別開始
        myOrientationListener.start();      

stop方法裡面

//停止方向感測器
        myOrientationListener.stop();

在本地資料設定裡面

    MyLocationData data = new MyLocationData.Builder()
    //設定方向
    .direction
(mCurrentX) //設定自定義圖示 MyLocationConfiguration config = new MyLocationConfiguration(com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL, true, mIconLocation); mBaiduMap.setMyLocationConfigeration(config);

下面是感測器監聽的實現程式碼

public class MyOrientationListener implements SensorEventListener{
    //用來獲取Seosor
    private SensorManager mSensorManager;
    private Sensor mSensor;
    private Context mcontext;   
    private float lastX;
    private OnOrientationListener mOnOrientationListener;

    public MyOrientationListener(Context context) {
        super();
        context=this.mcontext;
    }
    @SuppressWarnings("deprecation")
    //開啟監聽的方法
    public void start(){
            mSensorManager = (SensorManager) mcontext.getSystemService(Context.SENSOR_SERVICE);
            if(mSensorManager!=null){
            mSensor = mSensorManager.getDefaultSensor(SensorManager.SENSOR_ORIENTATION);            
        }
            if(mSensor!=null){
            //註冊監聽
                mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_UI);
            }
    }
    //停止監聽的方法
    public void stop(){
        mSensorManager.unregisterListener(this);
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
//拿到方向感測器       if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
            float x = event.values[SensorManager.DATA_X];
            //如果移動超過一個精度則轉向
            if(Math.abs(x-lastX)>1.0){
                if(mOnOrientationListener!=null){
                    mOnOrientationListener.OnOrientationChanged(x);
                }
            }
            lastX  =x;
        }       
    }

    public void setOnOrientationListener(OnOrientationListener mOnOrientationListener) {
        this.mOnOrientationListener = mOnOrientationListener;
    }
//定義回撥介面
    public interface OnOrientationListener{
    //傳遞改變的監聽的x方向的值
        void OnOrientationChanged(float x);
    }
}

相關推薦

android 實現手機方向識別

//自定義導航圖示 private BitmapDescriptor mIconLocation; //自定義感測器implements SensorEventListener private MyOrientationListener myOrientat

OpenVPN For Android實現手機刷Twitter

     筆者有時候也會刷刷Twitter,或者上Facebook吹吹牛逼,目前的Android對於VPN支援實在是渣渣,用了很多免費的VPN方案都讓人慾哭無淚。於是有了自己弄一套VPN的想法,以實現筆者刷刷Twitter,吹吹牛逼的夢想!      基本配置:     1

android實現垂直方向跑馬燈效果

因為最近公司要做一個抽獎功能,裡面有一個模組就是中獎使用者,對中獎使用者實現垂直方向跑馬燈效果,最先的思想方式是類似歌詞,做了n久,發現刷屏時間會有問題,特自己寫了一個控制元件,希望能幫到大家 “` package com.demo.xsl.text; i

Android獲取手機裝置識別碼(IMEI)和手機號碼

最近看了下獲取手機裝置ID和手機資訊以及SIM的資訊例子,主要還是借鑑別人的,現在自己寫一下,算是鞏固加深了,也希望能給大家一個參考 必要的條件還是一部真機,SIM卡或者UIM卡。 首先,在AndroidMainfest.xml裡獲取許可權 <uses-permiss

android 獲取手機唯一識別

//如果獲取不到imsi號,就拼接其它資訊獲取唯一碼: 結論是,依然有部分手機獲取不到。 final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context

android-實現手機截圖效果,儲存截圖圖片

一、準備一張圖片 拷貝screenshot_panel.9.png放在目錄drawable-xhdpi下 二、activity_main.xml 程式碼如下: <RelativeLayout xmlns:android="http://schemas.andro

Android獲取手機方向

如果使用者開啟了設定裡的螢幕旋轉,Android中處理橫豎屏切換,通常的做法是在AndroidManifest.xml中定義android:configChanges="orientation|key

android實現異網雙卡雙待識別運營商網路

檢測的程式碼 private void checkIMSi() {         boolean simStateBySlotIdx = SimUtils.getSimStateBySlotIdx(this, 0);     &n

Android USB串列埠攝像頭實現拍照與識別二維碼

二維碼現在用的超級多,其實它就是一種編碼,把字串編碼儲存成一個圖片,我們掃描圖片得到字串就解碼成功。 最有名的二維碼解析庫是 google 出品的 Zxing,網上也有很多的封裝庫,有自定義掃描視窗等,更多庫請在這個庫中搜索 二維碼即可   USBUVCCa

android 呼叫手機打電話 簡單實現

首先看下佈局xml ,我的事一個button按鈕 點選 打電話 ,手機號是自己定義,這個你可以根據自己邏輯寫 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas

android實現一鍵切換顯示方向

android實現一鍵切換顯示方向 功能要求:點選 button,一鍵實現顯示方向0和180度切換 IWindowManager mWm; mWm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"

Android實現搖晃手機的監聽(搖一搖)

背景 專案中,需要在某些介面監聽使用者搖晃動作做出相應的反應。下面分Kotlin和Java兩種給出具體的程式碼。 實現方案(Kotlin) 新增SensorManagerHelper.kt class SensorManagerHelper(private

android實現手機定位百度地圖實現

單獨無聊的單機程式並沒有意思,我們何不在程式裡面加上有趣的網路呢, 這次我們主要是講關於Android手機的定位系統,本次使用的是百度定位。   下面表格是提供的兩個我們後面需要的地址 百度定位下載地址 http://lbsyun.baidu.co

使用ffmepg實現手機直播功能(Android

客戶端的話最主要就是使用ffmpeg。 接下來要講的就是從ffmpeg的編譯開始,到編碼,以及推流,到解碼等過程。 ffmpeg的編譯 懂英文看這裡就行:ubuntu下的編譯指南 ffmpeg的編譯需要linux環境,我這裡使用的是虛擬機器(vmwa

Android呼叫手機中的應用市場,實現評分功能

需求很簡單,通過手機中的按鈕開啟手機中安裝的應用市場,給自己的app評分,實現程式碼如下: String packageName = getPackageName(); //開啟所有安裝的市場 Uri uri = Uri.parse("market://details?id="+ p

ubuntu Android開發eclipse不識別手機解決方法!(附步步高vivo解決方法)

也是花了我好久時間,最終才找到一個完整且簡單還可以直接見效的好方法。 方法兩個: 如果您的手機是比較好的大廠商牌子,如Moto,三星..什麼的,那麼就按部就班即可: 在終端輸入 sudo gedit /etc/udev/rules.d/51-android.rules在開

android 程式碼實現手機自動恢復出廠設定不需要許可權

需要啟用成為裝置管理器 DevicePolicyManager mDPM; boolean active = mDPM.isAdminActive(mDeviceAdminSample); if (active) {mDPM.wipeData(0);}

基於EasyPR的車牌識別android實現

EasyPR4Android,基於EasyPR1.5beta的android實現 更新: 新增編譯好的安裝檔案 採用android studio2.3.3大幅簡化ndk開發的配置 特性: 1.支援拍照和支援相簿瀏覽識別 2.ndk呼叫OpenCV 3.從

Android 開啟手機淘寶,並自動識別淘口令,彈出商品資訊

前言:大家都遇到過被莫名其妙拉進一個微信群,然後群主開始發一些商品的連結,我們點選這個連結,會讓我們複製一個口令(就像這個¥AzZK0hPyou5¥),當我們複製這個口 令開啟淘寶會自動彈出這個商品的資訊。今天,就來和大家分享一下,這個需求是如何實現的。 1.首先我們需要

android 藍芽通訊實現手機藍芽的開啟,並掃描附近可見的藍芽裝置

藍芽是一種重要的短距離無線通訊協議,廣泛應用於各種裝置(手機,醫療,汽車等)。藍芽是比較常用的無線通訊裝置,早研究成為手機的標配。現在的安卓手機基本上都有藍芽,所有通過藍芽對資料有很好的硬體基礎 在Android中,與藍芽有關的類和介面在android.bluetooth包