2017-03-03 8 views
0

私は、Uberのように地図を作成して位置を追跡する必要のある単純なアンドロイドアプリを開発しています...私はユーザーの場所を格納するデータベースとしてfirebaseを使用しています。 場所を保存するには私のMainActivityが呼び出されたときに呼び出されるサービスを作成しました 私が直面している問題は、場所がデータベース内で一度しか更新されないということです。つまり、場所が変更されたときにデータベースで更新されません更新するために新しい場所のアプリケーションを再起動する必要があります。私の主な活動のfirebaseデータベースのアンドロイドアプリを使用して位置情報を更新する

ここで私はまた私がのonCreate(でサービスと呼ばれている

public void onLocationChanged(Location location) { 
Log.d("lam", "onLocationChanged:lam "+location.getLatitude()); //The log gets updated but not the values in database 
try { 
urlCurrenUser.child("Lattitude").setValue(location.getLattitude()); 
urlCurrenUser.child("Longitude").setValue(location.getLongitude()); 
}catch (Exception e){} 

をしようとした私の場所のサービス

public void onLocationChanged(Location location) { 
Log.d("lam", "onLocationChanged:lam "+location.getLatitude()); //The log gets updated but not the values in database 

Map<String,Object> taskMap=new HashMap<>(); 
taskMap.put("Latitude",location.getLatitude()); 
taskMap.put("Longitude",location.getLongitude()); 
try{     
    urlCurrenUser.updateChildren(taskMap);//urlCurrentUser is the path to database 
    }catch(Exception e){} 
       } 

でonLocationChangedメソッドのコードがあります)

編集 私のurlCurrentUser(データベースへの参照)に問題があると思いますデータベース内のEDが、場所の変更とは、再びコードを更新するために呼び出されたときに新しいが、それは例外すなわち

java.lang.NullPointerExceptionが与え座標:仮想メソッド 「com.firebase.clientを起動しようとします。 nullオブジェクト参照 上Firebase com.firebase.client.Firebase.child(java.lang.Stringで)」

私はちょうどこの を解決する方法を理解することはできませんがここに私のデータベース構造のスナップショットです enter image description here

Databaseリファレンスコード

urlCurrenUser = new Firebase(URL).child("users").child(authData.getUid()); 

答えて

0

古いAPIのバージョンを使用していたdocs最新に従ってください。

1 - firebaseプロジェクトコンソールからダウンロードした適切なGoogleサービスJSONファイル を設定していることを確認してください。

2 - 既定では、データベースへの読み取りと書き込みのアクセスが制限されているため、 は認証されたユーザーだけがデータを読み書きできます。 Authenticationを設定せずに を開始するには、公開アクセスのためにconfigure your rulesにアクセスしてください。これによりデータベースを 人に公開します。あなたのアプリを使用していない人もいますので、認証を設定するときには データベースを再度制限してください。

3 - よく文書化されたarticleに従ってください。 のデータをfirebaseデータベースから作成して読み込みます。

関連する問題