センサの百度SDKアプリ方向

今日、ほとんどのスマートフォンの内部に、さまざまなセンサ、2つのブログを持って、我々はマップとどのように地図上に自分の場所を見つけることを表示する方法を学びました。

次に、我々は携帯電話の前後に一致するように方位センサを組み合わせたいです。

レンダリングを初めて目を引き出します。
書き込み絵は、ここで説明しました
言っても過言ではない、次のようにタイムラインとコードです。
まず、私たちは私がにアップロードされません。この方向を表すアイコンを必要とする、学生は私に連絡する必要があります。
どのようにアイコンそれを初期化するには?
私たちは、BitmapDescriptorオブジェクトを定義する必要があり、それを初期化

private BitmapDescriptor mIconLocation;
mIconLocation= BitmapDescriptorFactory.fromResource(R.mipmap.navi_map_gps_locked);
        //初始化图标

このセットの後、我々は携帯電話への影響を見ることができますが、我々は携帯電話を振るどんなにが、方向が変更されないことがわかります。

ナビゲーションアイコンは、それに従うことを、携帯電話を作る方法を、次に表示された、と?

それは私たちが新しいクラスを作成して、電話システムのサービスを取得するために使用されるセンサインタフェースを実装する必要があります。それは携帯電話自体のセンサーのサービスを得ることですので、我々は、オブジェクトが、もちろん、我々は完全な環境のコンテキストをインスタンス化できるインスタンスセンサーが続くSensorManagerオブジェクトをインスタンス化する必要があります。

private SensorManager mSensorManager;
    private Context mContext;
    private Sensor mSensor;

このクラスでは、我々は携帯電話のロジックコードを振る際に、書き込みに使用onSensorChanged()メソッド、内部で書かれています。しかし、最初に我々は書いていません。センサーの開閉方向を設定するために、我々はこのクラスのセンサーを閉じる、[スタート]()オープンセンサー、STOP()メソッドには二つの方法の内側に設定する必要があります。ここでは、パラメータのコンテキストを渡す、コンストラクタを設定します。

public Direction(Context context){
        this.mContext=context;
    }
    public void start(){
    }//用于开启传感器
    public void stop(){
    }//关闭传感器
    public void onSensorChanged(SensorEvent event){
    }//手机晃动的逻辑代码

その後、我々はそれまでに、携帯電話のセンサーのサービスを得るために、オブジェクトが、我々はまた、SensorManagerオブジェクトが空でないかどうかを判断する必要がgetSystemService(Context.SENSOR_SERVICE)メソッドのstart()メソッドのコンテキスト内で行ってSensorManagerに強制的にgetDefaultSensor(Sensor.TYPE_ORIENTATION)SensorManager目標方向センサは、それが転写対象物をセンサが得られます。

mSensorManager=(SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
        if (mSensorManager!=null){
         mSensor=  mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        //获得方向传感器
        }
        if(mSensor!=null){
            mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI);
        }

コードでは、我々は対象センサーが空であるかどうかを判断する必要があり、それはそれはSensorManager.registerListener(であり、空でない)姿勢センサを開くには、我々は最後の引数を渡されたことをノートには、感度設定についてです。だから我々は、全体の内部に内容を書き込むために()メソッドを起動します。
我々は追加すると内部のstop()メソッド

mSensorManager.unregisterListener(this);

センサーのサービスを閉じます。

次に、我々は)(onSensorChangedに書き込みロジックコードにメソッドが必要

まず、この方法では、我々はSensorEvent例を渡すことに注意すべきである
センサが方向センサを決定した後に、サービスタイプが得られ、我々は、比較のために、この時点で、ストアX軸方向へのオブジェクトのフロートを定義する必要があります初期のX軸位置を定義する必要を開始しました。

 private float lastX;
 public void onSensorChanged(SensorEvent event){
        if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){

            float x=event.values[SensorManager.DATA_X];
 .......
  }
}

残りの我々は、x軸の位置座標の変更がなされたときにこのメソッドがアクティブであるコールバック関数を追加する必要があります。現時点では、インターフェイスを定義する必要があります。

public interface OnOrientationListener {
        void onOrientationChanged(float x);
    }
}

更に設けた後に、このインタフェースのメソッドは、インスタンス化され

public void setOnOrientationListener(OnOrientationListener mOnOrientationListener){
       this.mOnOrientationListener=mOnOrientationListener;
    }

この後、私たちは、独自のコールバック関数を追加することができます。

if(Math.abs(x-lastX)>0.2){
                if (mOnOrientationListener!=null){
                    mOnOrientationListener.onOrientationChanged(x);
                }

            }
            lastX=x;

いくつかのより明白で、携帯電話の向きを変えるために、私は変更が0.2を超えて発生したときに、xが変化する座標を設定するためにここにいます。
この場合、我々は、センサ・インタフェースこのクラスは完全であると認識します。
残りはメインイベントの内部にコードを追加することです。
みんなの気持ちあまりにも多くのスペースを維持するために、私は次のブログの内側に参加して、次の1つの衛星マップを切り替える方法についてでした次のブログを、リアルタイムマップを追加する方法、およびどのように自分の場所を見つけること。

私は必然的に、書き込みと何も間違っているがあり、また、Androidの開発に新しいです、私はあなたがポイントにそれを助けることができる、すばらしい神を見てほしいです。

書き込み絵は、ここで説明しました

公開された37元の記事 ウォン称賛10 ビュー10000 +

おすすめ

転載: blog.csdn.net/OneLinee/article/details/78306084
おすすめ