Android MapboxDirections cannot resolve

Android

現在、Mapbox のAndroidアプリ作成に注力しております。

ある地点から、ある地点へのルート案内を、下記の公式のサンプルコードを見て作ってますが

https://www.mapbox.com/android-sdk/examples/directions/

 Android MapboxDirections cannot resolve 

とかで、関連クラスが全部読み込めず、??となっていました。

先にこっち見ればよかったのですが、

https://www.mapbox.com/blog/android-directions-library/

mapbox-android-sdk の中に mapbox-android-directions はなかったんですね!!

Gradleの中に

 dependencies {
 
    //Mapbox
    compile('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar') {
        transitive = true
    }
 
    compile ('com.mapbox.mapboxsdk:mapbox-android-directions:1.0.0@aar'){
        transitive=true
    }
 
 }

と書いたらクラスが読み込めるようになりました![smile]

Android MapViewが読み込めない

Android

Android MapViewが読み込めない

Androidアプリ開発で、Google Mapなどを読みむためのMapViewですが、

 MapVies cannot be resolved to a type

などという表示が出て読み込めない場合、プロジェクトのビルドターゲットに問題がある場合があります。
下記のクラスが全部読みこめない、というエラーになったりします。

 import com.google.android.maps.GeoPoint;
 import com.google.android.maps.MapActivity;
 import com.google.android.maps.MapController;
 import com.google.android.maps.MapView;
 import com.google.android.maps.MyLocationOverlay;

Eclipseでの操作は

  1. プロジェクトの上で右クリック
  2. Propertiesをクリック
  3. Androidをクリック
  4. Project Build TargetをGoogle APIs 2.2にする

よく詰まっているのに忘れてしまうので、書いておきます!

ビルドターゲットが、Androidで始まるものではなく、Googleで始まるものにしないとダメということです。

Android LocationClientを利用して位置情報を取得する際の注意点

Android

Android LocationClientを利用して位置情報を取得する際の注意点

LocationClientは位置情報を取得するためのクラスです。
https://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

今の位置情報を取得するためには、

 mLocationClient = new LocationClient(this, this, this);
 //Google PlayサービスにConnectしてから
 mCurrentLocation = mLocationClient.getLastLocation();

とやれば取れるはずなのですが、ここに落とし穴があります。

それは他のLocationClientがすでにGoogle Playに接続していると、いくらgetLastLocation() をやっても現在位置が帰ってこない(nullで帰ってくる)、ということです。

これは結構悩んだので、ドキュメントに書いておいてほしかった…。(書いてあるのかもしれませんが、見落としてるんでしょうか?)

とりあえずは、一度Google Playサービスとの接続を切断して、また再接続すると、新しいLocationClientで現在位置が取得できるようになります。

参考:LocationClient getLastLocation() return null
http://stackoverflow.com/questions/16830047/locationclient-getlastlocation-return-null

Android JUnit4 初心者導入用のサンプル

Android

AndroidのJUnitについては、ADTがEclipseだった時代にすこーしだけかじったことがあったぐらいで、ほかの担当者に任せていましたが、今回あらためて私がやることになったので、勉強がてら書いていきます。

どうやら、JUnitが4になって、だいぶ様子が変わったようです。
利用する開発環境は、Android Studio 2.1.1です。

以前は、junit.framework.TestCase classをExtendしないといけなかったり、メソッド名にtest とつけなくてはいけなかったのですが、そういうのもなくなったり、ほかにもかなり機能が拡張されているようです。

https://developer.android.com/training/testing/unit-testing/local-unit-tests.html?hl=ja

まずは、アプリケーションのレベルにあるbuild.gradleに次のように付け加えます。

 dependencies {
    
    //JUnitのために付け足し
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
    // Optional -- Mockito framework
    testCompile 'org.mockito:mockito-core:1.10.19'
 } 
 defaultConfig {
     //JUnitのために付け足し
     testInstrumentationRunner  "android.support.test.runner.AndroidJUnitRunner"
 
    }

早速ではありますが、これは初心者用!ということで、まずは超簡単!なテストスクリプトです。

たとえば、パスワードなどの入力のために、文字数を数えて、指定の文字数以上ならtrueを返す、というメソッドがあります。

 public class Validate {
   //中略
    /**
     * 特定の文字列が、定められた桁数以上かどうか
     */
    public static boolean isEnoughCharacters(String str, int number){
 
        if (str.length() < number) {
 
            return false;
 
        }
 
        return true;
    }

これのテストコードをつくります。

 app/src/test/java/ValidateTest.java

というファイルを作ります。

 import android.test.suitebuilder.annotation.SmallTest;
 
 import org.junit.Test;
 
 import java.util.HashMap;
 import java.util.regex.Pattern;
 
 import jp.onlineconsultant.densaburoporoto.utils.Validate;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 
 /**
 * 登録のバリデーションのテストユニット
 */
 
 @SmallTest
 public class ValidateTest {
 
    @Test
    public void isEnoughCharacter_ReturnsTrue() {
 
        String str = "hogehoge";
        int number = 6;
        assertTrue(Validate.isEnoughCharacters(str, number));
    }
  
 
 }

んで、作ったら、ValidateTest.javaを右クリックして、
「Run ValidateTest」
というのを選択します。

実行されて、Greenが表示されたでしょうか?!

ちなみに、Googleさんが提供する Google Cloud Test Labというのがあって、どうやら?たくさんの実機でテストできたみたいですが

https://developers.google.com/cloud-test-lab/?hl=ja

今は、Firebase というサービスに移ったみたいですね。

https://firebase.google.com/

まだ、ちょい見しかしていないので、よくわかりませんが、今後見てみます。

Android JUnit プロジェクトに赤いエクスクラメーションがつく

Android

Android JUnit プロジェクトに赤いエクスクラメーションがつく

AndroidのテストプロジェクトをJUnitで作っておりますが、ある日、赤いエクスクラメーションマークがついて、Runできなくなってしまいました。

既出の
「google-play-servise」がプロジェクトに反映されていない時の対処法
と原因が一緒かと思いきや、意外なことが原因だったので、書いておきます(^_^;

テストプロジェクトなので、もちろん元プロジェクトが必要ですが、その元プロジェクトを一旦消して作り直したりしていたのが原因でした。

  1. プロジェクトを右クリック→Property→Java Build PathのProjectsというタブをクリック
  2. 元プロジェクトがありますので、古いプロジェクトをRemoveして、新しいプロジェクトをAddします。

これでなおりましたー!!