ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2015年5月15日金曜日

Android で default で使える drawable 一覧

概要

drawableはボタンやアイコンにするいわゆる画像のことです
普通は「drawable-hdpi」や「drawable-mdpi」といったフォルダに .png ファイルを配置して「@drawable/hoge」みたいな感じで png ファイルを参照します

ただ、よく使うアイコンはAndroid SDKにデフォルトで搭載されています
デフォルトで搭載されているアイコンを使えば、いちいち自分で画像を作成する手間も省けます

環境

  • Mac OS X 10.10.3
  • Android SDK 24.1.2

使えるアイコンの一覧

全ては上記に記載されています
ここに記載されているリソースはデフォルトで使用できます
例えばお気に入りとかで使用する星アイコンは以下のように参照することができます

<item
  android:id="@+id/favorite"
  android:icon="@android:drawable/star_off"
  android:showAsAction="ifRoom"
  android:orderInCategory="20"
  android:title="@string/favorite"/>

上記の例はオプションメニュー(ActionBar)内で表示する項目にアイコンを設定する際にデフォルトのアイコン「star_off」を使った例です
「android:」の部分はもしかしたら不要かもしれません

ポイントは冒頭に紹介した一覧にあるアイコンしかデフォルトでは使えないということです
Webで調べると「ic_menu_refresh」などがデフォルトで使えるという記載があるのですが、コンパイルエラーになります
自分も一覧を見るまでは使えると思っていたのですがいざ使ってみるとコンパイルエラーとなり確かに一覧にも載っていませんでした

なのでコンパイルエラーになる場合はまず一覧に存在するアイコンなのか調べてみるといいと思います
残念なのは一覧にリソース名でしか紹介がないので、どんなアイコンなのかは実際に使ってみるか、リソース名でGoogleで画像検索とかするとわかると思います

最後に

デザインできない開発者にとってはこういうアイコン集をデフォルトで用意してくれるのは嬉しいです
また、デフォルトで用意されているアイコンは他のアプリで使われている可能性も高いのでUX的にもいいと思います
そのアイコンのコンテキストが implicit で理解されているとわざわざラベルをつける必要もなくなると思います

2015年4月2日木曜日

Intel x86 の高速 Android エミュレータでスクリーンショットが取得できない

概要

Android のエミュレータを高速にする方法としてIntel x86のCPUをエミューレートする方法が有名ですが、高速エミュレータを使っていてスクリーンショットが取得できない現象に遭遇しました
これまではわざわざARM CPUを使ったエミュレータを別途作成して、それを起動した上でスクリーンショットを取得していたのですが高速エミュレータ上でもうまく取得できるようになったので紹介します

環境

  • Mac OS X 10.10.2
  • Eclipse Luna 4.4.1
  • Android ADT extentions 3.5.1
  • Android-SDK 24.1.2
  • Android 5.1 (API 22)

ポイント

高速エミュレータを動作させるための設定

エミュレータを作成する際にCPUにIntel x86のCPUを選択することはもちろんですが「Use Host GPU」のチェックボックスもONにすると思います
これをONにしないとエミュレータを起動してもずっと黒い画面から進まない状態になるからです(自分はそうなるので「Use Host GPU」をONにしています)

高速エミュレータとして設定したAVDの設定はだいたい以下のようになっていると思います
config_highspeed_emu.png

Use Host GPU をONにしていてもスクリーンショットを取得できるようにするには

これも動作したときの自分の状況ですがポイントはTargetで指定しているAPIのバージョンかなと思います
動作しないときは 4.4 や 5.0 の API Level を選択していたのですが 5.1 が Android SDK Manager からダウンロードできるようになり、それを設定してからはスクリーンショットが取得できるようになりました

なので今回の結果としては
Android SDK Manager で Android 5.1 (API 22) にアップデートする
というのが回答になります

Tips

実はこの問題は公式?でも2013年くらいから議論されています

2015年3月に入って進捗があったようでここでもアップデートしたら動作したという回答があるようです

バージョンや環境に依存する問題なのでアップデートしても動作しない可能性はありますが、とりあえず自分が「環境」の部分に記載したバージョンやマシンの組み合わせであれば動作したので紹介しました

2015年1月7日水曜日

Androidで実行中のメソッド名をロギングする方法

概要

タイトルの通り
Androidで実行さればメソッドのメソッド名をLogCatに出力する方法を紹介します

環境

  • Mac OS X 10.8.5
  • Eclipse Kepler 4.3
  • Android SDK Tools 24.0.2

方法

Log.i("my-app", "Start the method " + Thread.currentThread().getStackTrace()[2].getMethodName());

でOK

getStatckTrace()[2]でindexが2になっているにハマった
0がcurrentThreadで1がgetStackTraceが返ってくるみたい
Androidのバージョンにもよるのか?
とりあえずこれで取得できた

2014年12月22日月曜日

device not found

概要

Eclipse + Androidで開発をしていてEclipseのコンソールで

[2014-12-16 22:06:57 - DDMS] device not found
com.android.ddmlib.AdbCommandRejectedException: device not found
    at com.android.ddmlib.AdbHelper.setDevice(AdbHelper.java:774)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:396)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:347)
    at com.android.ddmlib.Device.executeShellCommand(Device.java:610)
    at com.android.ddmuilib.SysinfoPanel$1.run(SysinfoPanel.java:209)
    at java.lang.Thread.run(Thread.java:745)

みたいなエラーが出てEclipse側にlogcatが流れなくなった場合の対応方法を紹介します
昔のこの状態になったら諦めてエミュレータ+Eclipseを再起動していました

環境

  • Mac OS X 10.8.5
  • Eclipse Kepler 4.3
  • ADT 23.0.2

対応方法

Eclipseから

Window -> Open Perspective -> Other -> DDMS

open_ddms.png
を選択

「Devices」というViewを見つけて下矢印を選択
「Reset adb」という選択肢があるのでクリック
choice_reset_adb.png

するとエラーが出ますが無視
error.png
このときコンソールのログを見ると

[2014-12-19 18:59:07 - DeviceMonitor] Connection attempts: 11

みたいなログが出ています
これが止まるまで待ちます、たぶん12くらいで止まると思います

そしたら再度「Devices」Viewにあるプロセスを一個選択(何でもいい)
touch_some_one.png

ってやるとLogcatにダーっとログが流れ始めると思います

これでEclipseの再起動を待つあの時間からも開放されました

2014年12月13日土曜日

error loading /system/media/audio/ui/KeypressDelete.ogg

概要

自分の場合、該当エラーが出たのはエミュレータで動作テストしているときにListView各項目をタップすると発生しました

環境

  • Mac OS X 10.8.5
  • Eclipse 4.3 (Kepler)
  • Android SDK 23.0.2 (Homebrewでインストール)
  • Android 4.4.2

対応策

エミュレータの設定を変更するだけです

起動してアプリ一覧を表示して
start_emulator.png

アプリ一覧から設定を起動して
open_config.png

設定から音の設定を開いて
open_sound.png

音の設定から音量の設定を開いて
open_volume.png

3つある音量の設定を全部0にしてOKして
set_volume_0.png

音の設定の下のほうでチェックのついている項目を外します
sound_check_off.png

これで完了、
再度アプリを開いてLogcatを見て該当のエラーが出ていないことを確認してみてください
自分はこれでOKでしたが、これでもダメな場合は他にもサウンドの設定をしている箇所があるかもしれません

ちなみにAVDの設定は以下の通りです
my_avd.png

2014年5月16日金曜日

ListViewでonListItemClickが動作しなくなったときの対処

■環境
Target Android 19
Android SDK Tools 22.6.2

■原因
ListViewの表示にArrayAdapterでのカスタムリストを利用しており
そのカスタムリストのImageButtonが含まれていたから

■対策
以下のどちらかを実施することで対処することができました

1. ImageButtonを利用しない

2. Layout構造を利用し属性に以下を追加する
例えばArrayAdapter用のレイアウトXMLファイル内でLinerLayoutを使っている場合は以下のようにする
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:descendantFocusability="blocksDescendants" >

ポイントは「android:descendantFocusability="blocksDescendants"」でこれがあるとListViewの用をクリックできるようになりonListItemClickが呼ばれるようになる

■参考URL

2014年4月15日火曜日

Androidアプリを公開する前にやらなければならない最低限の9のコト (+1)

P.S 20150122
No. 6 を追加しました、全部で10個になりました

1. アプリの開発
言わずもがな、これがないと始まりません
私はEclipse + ADTで開発します
環境構築方法はこちら

2. 証明書の作成
アプリが他の人に偽装されないようにアプリには証明書を埋め込む必要があります
アプリに埋め込む証明書は自作の証明書で問題ありません
Eclipseで開発しているのであれば.apkファイルを作成するときに同時に証明書も作成することができるので便利です
もし、Eclipse開発でないという場合はJavaのkeytoolというコマンドで作成することができます

3. apkファイルの作成
基本はEclipseからエクスポートすればいいと思います
裏側はadbコマンドを利用していると思いますので直接adbコマンドを実行してもOKです
Eclipseからapkファイルをエクスポートする方法はこちらで紹介しております
また、mavenのmaven-android-pluginを使って.apkファイルを作成する方法も紹介しております、ちょっと面倒ですがmaven経由で.apkを作成できるようになります

4. アプリのアイコン作成
Google Playでも表示されるアイコンを作成します
アプリの第一印象を決める大事なものなので丁寧に作成しましょう
作成したアイコンはアプリに直接設定します
Eclipseで開発しているのであればプロジェクト作成時にアイコンを選択できます(もちろんプロジェクトを作成後にも変更することができます)

5. アプリのスクリーンショットを取得
スクリーンショットの取得方法はこちらで紹介しています
プロモーションテキストを設定した場合はプロモーション画像も設定する必要があります
スマホ用のスクリーンショット、7inchiタブレットのスクリーンショット、10inchタブレットのスクリーンショットをそれぞれ取得します
取得する枚数はそれぞれ最低2枚となります

6. 宣伝用画像の作成
1,024 x 512 pxで作成する必要があります
宣伝用画像はGooglePlayで人気のあるアプリである場合に使用される可能性があります
いつからかアプリの公開に必須になったようです

7. Google Developer Console のアカウント取得
ワンショット2500円で登録できます
お金を払ってアカウント登録しないとアプリを公開することはできません
GoogleアカウントとGoogleWalletの登録が必要になります
登録は以下から可能です
https://support.google.com/googleplay/android-developer/answer/113468?hl=ja

8. アプリのタイトルと説明決める
アプリのタイトルと概要を決めます
タイトルはGoogle Playのアプリ名として表示されます
アプリのアイコンと並んでユーザが一番はじめに目にする部分なので慎重に決めてください

アプリの説明には右記のHTMLタグを使用することができます「<b><i><u><font><a>」
設定はGoogle Developer Console上から実施します
基本は日本語のサイトだけで大丈夫ですが、海外の人向けに作成したアプリであれば他の言語用の説明テンプレートもありますので作成します
日本語版を作成したからといって自動で翻訳等してくれるわけではないのでご注意を
また他の言語の説明テンプレートを追加したら入力項目を埋めないとアプリを公開できないのでそれも注意してください

9. アプリの開発者の情報を決める
アプリ名のすぐ近くに表示されるアプリ開発者名とアプリを紹介しているページの一番下にある「その他情報」でアプリ開発者への問い合わせ情報に使われます
基本はGoogleアカウントに紐づく情報で問題ないかと思いますが、独自で変更することも可能です
開発者名、連絡先メールアドレス、サイト情報が変更できます

10. アプリのステータスを公開中にする
apkファイルも登録し、アプリのタイトルや説明、スクリーンショットも登録したけどアプリが公開されていない
というときにはアプリの公開ステータスが「公開中」になっていることを確認してください
アプリのステータスはGoogle Developer Console上でそれぞれのアプリごとに管理されています

とりあえずアプリを公開するために実施した最低限のことは以上です
他にもいろいろと設定可能な項目等はあります(アプリ内課金の設定とかゲームサービスの設定とか)

■Tips
  • プロモーション
  • 個人的なアプリのプロモーションの王道かどうかわかりませんが一番いいのはSNSかと思います
  • アプリをアップデートする方法
  • どんな些細な修正でもAndroidManifest.xmlでandroid:versionNameのバージョンを必ず変更する必要があります

2014年4月14日月曜日

EclipseでAndroidのapkファイルを作成する方法

■環境
Windows7 64bit
Eclipse Kepler 4.3
ADT 22.6.2

■apkファイル作成
1. プロジェクトを右クリックして「Export」を選択します

2. Export Android Application を選択します

3. apkをエクスポートするプロジェクトを確認します
先ほど選択したプロジェクトであることを確認します

4. keystore証明書を作成します
Androidアプリは作成するapkファイルに証明書を埋め込む必要があります
すでに証明書がある場合はそれを選択し、証明書に埋め込まれているパスワードを入力します
新規で作成する場合は「Create new keystore」を選択し証明書を作成します
証明書を保存するパスを選択し、証明書に設定するパスワードを入力します
パスワードは6文字以上である必要があります

5. 証明書の情報を入力する
Passwordには証明書作成時に設定したパスワードを入力します
Validity(years)には証明書の有効年数を入力します、基本は切り替えることはないと思いますので100年を入力します(必要に応じて変更してください)
証明書作成時に必要な情報は「First and Last Name」のみとなります、他にも入力が必要な場合は入力してください
ここでは「First and Last Name」のみ入力します

6. apkファイルの保存先を選択する
最後にapkファイルの保存先を選択します


これでapkファイルの作成は完了です
Google Playで公開するためにはapkファイルが必須なので覚えておいて損はない方法かと思います
裏側は「adb」コマンドと「keytool」コマンドを実行しているだけかと思いますので、Eclipseを使わなくてもapkファイルを作成することは可能です

2014年4月13日日曜日

EclipseでAndroidアプリのスクリーンショットを取得する方法

■環境
Windows7 64bit
Eclipse Kepler 4.3
ADT 22.6.2

■事前準備

■取得方法
1. Android Virtual Device Manager を起動します
2. スクリーンショットを取りたいデバイスを起動します
今回は普通のスマートフォンのスクリーンショットを取得したいと思います
デバイスは「Nexus S 480×800 hdpi」を元に作成しています
AVDで起動するエミュレータを選択し「Start」をクリックします
3. DDMSのパースペクティブを開く
エミュレータが起動したらEclipseのパースペクティブの設定でDDMSを開きます
4. Deviceタブで端末を選択してスクリーンショットを取得する
必ず端末情報を選択します
カメラボタンがあるのでボタンをクリックします

5. 画像を保存する
カメラボタンをクリックすると保存するスクリーンショットの画像が別のモーダルで表示されるので「Save」をクリックします
保存先を選択して完了です

2014年2月21日金曜日

eclipseでmaven-android-pluginを使ってapkファイルを作成してみた

■環境
Windows 7
Eclipse Juno 4.3
※Android Development Tools for Eclipse と Android for Maven Eclipse プラグインのインストールも必要です
Android Development Tools(ADT)20130514
※事前にeclipseおよびADTのインストールは完了しているものとします

■手順
1. JDK1.6のインストール
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
からJDK1.6の最新版のupdateをダウンロードします
ダウンロードにはOracleのアカウントが必要になりますのでない場合は作成してください
2014/02/19時点での1.6の最新は「update 65」でした
.exeファイルをダウンロードしインストールしたらeclipse上にJDKを登録します
Window -> Preferences -> Java -> Installed JREs
から設定します

2. maven3.1.1のインストール
http://maven.apache.org/download.cgi
から3.1.1以上のmavenをダウンロードします
zipファイルを展開後、適当な場所に配置すればインストール完了です
インストール完了後はeclipseにmaven3.1.1を登録してあげます
Windows -> Preferences -> Maven -> Installations -> Add
から配置したパスを選択すれば完了です

3. ANDROID_HOMEの確認
環境変数にANDROID_HOMEが設定されているか確認してください
設定がない場合は環境変数の追加を実施してください
コントロールパネル -> システムとセキュリティ -> システム -> システムの詳細設定 -> 環境変数 -> 新規
※ユーザー環境変数に追加してください
※Macの場合は.bash_profileにANDROID_HOMEの設定を記載してください

4. mavenプロジェクトへのコンバート
eclipseからAndroidプロジェクトをmavenプロジェクトにコンバートします
プロジェクトを右クリック -> Configure -> Convert to Maven Project
mavenプロジェクトに変更するとプロジェクトの再ビルドが走ります

おそらくJDKのエラーがでるのでプロジェクトに設定されているJavaをインストールしたJDK1.6に変更します
プロジェクトを右クリック -> Build Path -> Configure Build Path
でデフォルトで設定されているJRE1.5を選択しEditからインストールしたJDK1.6に変更します

5. pom.xmlの編集
以下はサンプルとなります
ポイントとなる部分を説明します
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.example</groupId>
 <artifactId>android_ncmb_sample</artifactId>
 <version>1.0</version>
 <packaging>apk</packaging>
 <name>android_ncmb_sample</name>

 <dependencies>
  <dependency>
   <groupId>com.google.android</groupId>
   <artifactId>android</artifactId>
   <version>4.1.1.4</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>com.google.android</groupId>
   <artifactId>support-v4</artifactId>
   <version>r7</version>
  </dependency>
  <dependency>
   <groupId>org.twitter4j</groupId>
   <artifactId>twitter4j-core</artifactId>
   <version>3.0.5</version>
  </dependency>
  <dependency>
   <groupId>local.lib1</groupId>
   <artifactId>gcm</artifactId>
   <version>1.0.2</version>
  </dependency>
  <dependency>
   <groupId>local.lib2</groupId>
   <artifactId>NCMB</artifactId>
   <version>1.2.0</version>
  </dependency>
 </dependencies>

 <build>
  <sourceDirectory>src</sourceDirectory>
  <resources>
   <resource>
    <directory>src/resource</directory>
   </resource>
  </resources>
  <plugins>
   <plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.8.2</version>
    <configuration>
     <sdk>
      <path>${env.ANDROID_HOME}</path>
      <platform>19</platform>
     </sdk>
    </configuration>
    <extensions>true</extensions>
   </plugin>
  </plugins>
 </build>
</project>

まず<plugins>タグを使って本題のmaven-android-pluginを有効にします
<version>タグに設定する値は最新のプラグインのバージョンを入力するようにしてください
<platform>タグにはAndroid SDK ManagerでインストールしてあるSDKのバージョンを入力してください、ここも最新のバージョンを入れておけば問題ないです

次に<packaging>タグをjarからapkに変更します
apkの指定はmaven-android-pluginをpom.xmlに定義していないとエラーとなります

3つ目にAndroidのコンパイルに必要なライブラリを定義します
<groupId>com.google.android</groupId>
のgroupIdに属するライブラリ2つを追加します

なおpom.xmlのdependencyでmavenのセントラルリポジトリからjarをダウンロードできる場合はローカル側のjarファイルは削除して問題ないです
後述しますがmavenのセントラルリポジトリに存在しないjarファイルはそのまま残しておいてください、あとでローカルのmavenリポジトリに登録します
(なので上記pom.xmlを記載しても現段階ではローカルリポジトリにjarが登録されていないのでエラーになるかと思います)

6. ソースコードおよびリソースファイル(プロパティファイル)の確認
同じくpom.xmlの説明になりますがソースコードおよびリソースファイルが存在するパスを<sourceDirectory>および<resources> -> <resource> -> <directory>でちゃんと定義してください
mavenのデフォルト設定の場合、ソースコードは「src/main/java」でリソースファイルは「src/main/resources」となります
今回は既存のAndroidプロジェクトからmavenプロジェクトへコンバートしているのでディレクトリが掘られていません
なのでpom.xmlでデフォルトとは違うソースのパスを指定してあげる必要があります
(src/main/javaとsrc/main/resourcesを作成してそれぞれにソースとリソースファイルを移動して対応しても問題ないとは思います(未検証))

7. ローカルリポジトリへjarの登録
mavenのセントラルリポジトリに存在しないjarファイルをローカルのリポジトリに登録します
実はmaven-android-pluginではscopeにsystemを利用することができないらしく、ダウンロードできないjarはローカルに登録してから参照する必要があります
http://code.google.com/p/maven-android-plugin/issues/detail?id=422

ローカルリポジトリへのjar登録はmavenコマンドかeclipseから実施する必要があります
mavenコマンドの場合はpom.xmlが配置しているパスで以下のコマンドを実行してください
mvn install:install-file -Dfile=libs/gcm.jar -DgroupId=local.lib1 -DartifactId=gcm -Dversion=1.0.2 -Dpackaging=jar

eclipseから実施する場合は
Run Configurations -> Maven Build -> New
でBase directoryにプロジェクトを選択したあとGoalsに「install:install-file」を設定しkey-valuesでパラメータを追加できるのでAddから以下のパラメータをそれぞれ追加します
  • file -> libs/gcm.jar
  • groupId -> local.lib.1
  • artifactId -> gcm
  • version -> 1.0.2
  • packaging -> jar
最終的には画面のようになっていればOKです、設定が完了したらApply -> Runとして実行します

この作業は使用するjarの数だけパラメータを変更して実施する必要があります
ただ、ビルド時に毎回実施する必要はなく、一度登録すれば再度ローカルのリポジトリに登録する必要はありません
ローカルのリポジトリに登録完了後も念のためjarファイルはプロジェクト内に残しておきましょう

8. apkファイルの作成
ようやくここまで来ました。。。
あとはgoalsに「clean install」を指定してmavenビルドすれば完了です
失敗する場合はeclipseに設定されているJavaやmavenのバージョンを再度確認してください
あとはTipsにトラブルシューティング的なことも記載しているのでそちらも御覧ください

以上で設定は完了です
今回は既存のandroidプロジェクトをmaven化しましたが、m2e-androidなるプラグインもあるようで、それのquickstartを使う方法もあるようです
全体的に結構大変でした。。。特にscopeにsystemが使えないのはハマりました

■Tips
・dex2jar
作成されたapkファイル内にclasses.dexというバイナリファイルがあります
これがAndroid上で動作するために必要なファイルなのですが、逆コンパイルしてJavaのソースコードを確認することができます
dex2jarがそのためのツールでdexふぁいるからjarファイルにファイル形式をコンバートしてくれます
.apkファイルはただのアーカイブファイルなので解凍したあとにclasses.dexに対してツールを実行すればOKです
http://code.google.com/p/dex2jar/downloads/list

・Plugin execution not covered by lifecycle configuration: com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.2:generate-sources (execution: default-generate-sources, phase: generate-sources)
上記がエラーに対してはeclipseの場合はQuickFixから修正すればOKです、QuickFixの上から2番目のやつを選択すればOKです
Mark goal generate-sources as ignored in Eclipse build on Eclipse preferences (experimental)

・No Android SDK path could be found.
Android SDKへのパスがうまく通っていません
ANDROID_HOMEを設定しましたが、その環境変数をeclipseがうまく認識していない可能性があります
システムを再起動してみたり、Macの場合はlaunchctlから環境変数を再度設定してからeclipseを起動してください

2014年2月8日土曜日

Nexus7を修理に出す方法

■背景
Nexus7の液晶が突如表示されなくなり真っ暗の画面のままになってしまいました
特に強い衝撃を与えたわけではないのですが、発生してしまいました(日頃から持ち歩いていたので小さいな衝撃はあったと思いますが)
強制再起動(スタート+音量の上下長押し)や数日充電してからの電源ON等も試してみましたがうんとも言わず
ただ、電源は入っているようでうっすら砂嵐のような線が表示されているのは確認できたので、液晶自体が壊れてしまった感じがします
どうしようもないので、修理に出すことにしました
ググったりすると結構Nexus7を修理に出したりしている人がいたので自分もその手順をまとめておきました
参考になれば。。。ちなみに旧Nexus7です(2013年に発売されたモデルではありません)

■手順1. Asusのサポート窓口へ問い合わせ
電話でもOKですが中々つながらないとのことだったのでメールで問い合わせしました
以下のURLにアクセスします
https://vip.asus.com/VIP2/Services/QuestionForm?lang=ja-jp

問い合わせ用のフォームにアクセスできますので必要な情報を入力して問い合わせ情報を送信します
以下フォーム入力時のポイントです
  • 1番はじめのカテゴリは「技術サポート」を選択
  • シリアル番号はNexus7購入時の箱の側面に記述されている「CSSN」ではじまる番号を入力
  • 製品タイプは「Eee Pad」を選択
  • 製品タイプを選択すると製品モデルが自動で読み込まれるので「Nexus7」を選択
  • 問題点に現象をいろいろ記載(今回の場合だと液晶がおかしい点と強制再起動しましたとかを書きました)
  • 送信時に確認画面が無いので一番下の「送信」を押下するといきなり送信されるので送信する際には注意すること
問い合わせが完了すると完了メールが来ます
そして、自分は完了メールが来た翌日くらいにAsusの担当者からメールが来ました
メール本文を記載することはできませんでしたが内容を要約すると「その現象は修理しないと直らないのでNexus7を修理に出して下さい」とのことでした

■手順2. 必要な書類の作成、収集
修理に必要な書類は全部で4つです
  • 修理依頼書
  • 購入日(購入店)を確認することができる書類
  • 保証書
  • 佐川急便の着払い用伝票

まず「修理依頼書」ですが、これはAusuの公式ページからダウンロードできます
メールの返信にURLが記載されていました
http://support.asus.com.tw/images/file/ASUS%20Japan%E4%BF%AE%E7%90%86%E4%BE%9D%E9%A0%BC%E7%A2%BA%E8%AA%8D%E6%9B%B8.pdf
ダウンロードし必要な情報を手書きで記載します
1. で問い合わせた際と同じような情報を記載します
(もしかすると問い合わせをしないでいきなり書類を集めて送りつけても問題ないかもしれませんが。。。)
途中、同意するか否かみたいな項目がありますが基本は同意したほうがいいと思います
たぶんデータが初期化されたり、変なことされるけど、修理して直る可能性が高くなるんだと思います
修理の見積もりの部分に関しては何でもいいと思います、いろいろとWebで情報を探してみるとNexus7系の修理は基本「無料修理」か「無料新品」交換なのでどれを選択しても問題はないかと思います
ちなみに自分は「不要(連絡なしの修理可)」にしました
記載が完了したらOKです

次に「購入日(購入店)を確認することができる書類」です、もしかするとこれが一番収集しにくいかもしれません
フォーマットは問いません、購入時のメールであったりレシートであったり日付と店舗名が記載されていればOKです
自分はGooglePlayで購入したのでGooglePlayの購入完了メールを印刷して同梱しました
また、不確定ではありますがNexus7購入時に同梱されている保証書に購入店舗の情報が記載もしくは店舗印が押されていれば、それでも大丈夫かもしれません
とにかく「時期」と「場所」がわかればOKです
なんでこんな情報が必要なのかはわかりませんが、保証期間とか購入日あたりに出荷されたNexus7のバグ状況とかを確認するのに使うんでしょうか
とりあえず何かしら集められればOKです、修理に出すときに同時に梱包する必要があるので紙等に印刷しておいてください

3つ目に「保証書」です
これはNexus7を正規に購入していれば必ずついているものだと思います
中古やネットオークションだとついていない可能性があるかと思います
これは特に記載する必要はないかと思います、そのまま送付物に同梱してください

4つ目に「佐川急便の着払い用伝票」です
これは佐川急便に問い合わせるしかありません(Webで伝票を印刷できるサービスもあるようですが、問い合わせたほうが楽です)
問い合わせはお住まいの地域の担当営業所の集荷案内に問い合わせしてください
佐川急便のホームページから担当営業店を検索できるので検索し、そこに集荷案内の電話番号がありますのでそこに電話してください
http://www.sagawa-exp.co.jp/search/branch_search/
集荷の依頼と同時に着払い伝票も持ってきてもらうように伝えて下さい
集荷時に伝票を持ってきてくれるので直接そこでAsusの修理専用の宛先を記載してそのまま発送することができます
もちろん事前に伝票だけ持ってきてもらうことも可能です
Asusの宛先は問い合わせメールの返信に記載してあります、一応自分は以下の宛先が記載してありました
住所:〒136-0075 東京都江東区新砂2-2-11 佐川東京ロジスティクスセンター5F
宛先:エイスースジャパン修理サービスセンター 宛
電話番号:0800-123-2787
地域によっては異なる可能性もあるので正確にはAsusからの返信メールを参照するようにしてください

■手順3. 修理品の発送
書類の準備が完了したらあとは梱包して発送するだけです
梱包は簡易梱包でもいいですが、小さめのダンボールを用意してそこに「Nexus7本体」+「書類4部」を同梱するのがいいと思います
緩和材もできればいれたほうがいいと思います、Nexus7本体が入っているのですでに壊れているとはいえ更に悪化させないためには緩和剤を入れたほうがいいでしょう
緩和剤がない場合は新聞紙やビニール袋を詰めても緩和剤の代わりになります
あとは着払い伝票の貼り付けて発送すればOKです
集荷に来てもらってもいいし、営業店舗が近ければ直接持って行っても問題ないです

■手順4. 修理したNexus7の到着
あとはひたすら修理されるのを待ちます
だいたい手元に戻ってくるまでに発送から2週間くらいはかかると思っていてください
自分は発送(2014/1/25)から11日後(2014/02/05)に戻ってきました
また、修理完了後にサポートに関するアンケートがメールで届いたので回答しておきました

以上です
修理出すことがあれば参考にしていただければと思います

2014年1月9日木曜日

Android API開発用メモ

Android APIについての自分用のメモ
わかったことや気づいたことTipsがあったら随時追記していく

■基本的なソースコードの書き方
  1. activity_main.xml でUIを作成する
  2. Layoutsからレイアウトを決めてレイアウト上にButtonやEditTextを配置していく
  3. Activity側のクラスでtextView = (TextView) findViewById(R.id.textView1);的な感じでUIのオブジェクトを取得して操作する
  4. Buttonを押下した際のアクションはactivety_main.xmlのPropertiesで「On Click」に呼び出すメソッド名を記載すればOK、メソッドはpublic voidで引数にViewのオブジェクトを受け付けるようにすればOK
  5. メソッドを定義するのはActivityを継承しているクラス内で定義する(定義はActivityを継承しているクラスでして実際のロジックは別パッケージの別クラスでもOK

■Activity
画面そのもの
・使い方
public class MainActivity extends Activity {
・・・
}
スマートフォンが画面をスライドさせて次の画面にいくと次のActivityになる、そんなイメージ
Activityには状態があります

活動中や停止中、一時停止などがありそれぞれの状態にあわせて処理を実行することができる
そして使い終わったActivityはonDestroyしないと端末のメモリを逼迫することになるのでちゃんと破棄するようにしよう
(Javaのファイル処理やストリーム処理と同じで終わったオブジェクトはcloseしないといけないということです)

※本家Androidのサイトから拝借

■Intent
Activityを遷移するためのクラス
・使い方
Intent intent = new Intent(this, MeiroActivity.class);
startActivity(intent);

■SharedPreferences
画面間データの受け渡しをするためのKey, Valueのマップ
・使い方
SharedPreferences sharedPref = getSharedPreferences(key, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("key1", "value1");
データを保存する場合はSharedPreferencesオブジェクトからEditorオブジェクトを作成し、そのオブジェクトに保存
データを取得する場合はSharedPreferencesから直接取得する

SharedPreferencesオブジェクトを使用する場合は、それぞれのActivity内でオブジェクトを作成する

データ形式はKey, Valueなので無限に保存することができるが揮発性がありアプリが終了するとデータが失われてしまう
一時的なデータの受け渡しに使う(DBとしては使用しない)

■File
Android内部にファイルを生成し永続的にデータを保存
・使い方
FileOutputStream fos = openFileOutput(filename, Context.MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);

FileInputStream is = openFileInput(filename);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
Android独自のopenFileOutputとopenFileInputを使用してオブジェクトを取得したあとに通常のjava.io系のクラスを使えばファイル操作ができます

■DB
Android内部にSqliteDBを作成し永続的にデータを保存
・使い方
DatatradeDBAdapter ddba = new DatatradeDBAdapter(getApplicationContext());
SQLiteDatabase db = ddba.getReadableDatabase();
作成された上記のdbオブジェクトに対してinsertやselect等のSQLを発行することが可能です
DatatradeDBAdapterは独自で作成したクラスで、SQLiteOpenHelperを継承して作成します
DatatradeDBAdapterではテーブルの作成や削除を行うことができるSQLを管理したメソッドを持っています
DBのスキーマを文字列で管理するスキーマクラスを別途作成しておき、それをActivety等で呼び出すようにしましょう
もちろんDatatradeDBAdapter内のCreate Table内でもスキーマクラスの文字列を使ってテーブル作成します

■SurfaceView
ゲームやアニメーションを多用する滑らかに表示するためのView
・使い方
public class MeiroActivity extends Activity implements SurfaceHolder.Callback {

 private SurfaceHolder sh;

 protected void onCreate(Bundle savedInstanceState) {
  ・・・
  SurfaceView sv = (SurfaceView) findViewById(R.id.surfaceView1);
  sh = sv.getHolder();
  sh.addCallback(this);
 }

 public void surfaceCreated(SurfaceHolder holder) {
  drawTest();
 }

 public void drawTest () {
     Canvas canvas = sh.lockCanvas();
     ・・・
     sh.unlockCanvasAndPost(canvas);
 }

}
SurfaceHolderはonCreateで作成し必ずaddCallbackしましょう
Canvasの作成は別メソッドで実施し、surfaceCreatedメソッド内で実際に描画する処理を呼び出します
でないと、Canvasオブジェクトが内部的に作成されてないためにNullPointerExceptionが発生します
http://stackoverflow.com/questions/9510792/lock-canvas-fail-and-canvas-is-null-when-useing-surfaceview

■ImageButton
ボタンに画像を使用することができます
・使い方

ボタンを作成するだけならXMLのみで可能です
何かアクションを実行したい場合にはonClick等を設定し、Java側のソースコードにメソッドを作成するだけでボタンを押下したときに自動でそのメソッドが実行されます
普通のButtonオブジェクトのように作成可能です

■Context
http://individualmemo.blog104.fc2.com/blog-entry-41.html

■Theme.NoTitleBar
Activity上部のタイトルを削除することが可能
・使い方
android:theme=@android:style/Theme.NoTitleBar"
テーマはAndroidManifest.xmlに記載します

■Camera
カメラ機能、インカメラとアウトカメラが使える
・使い方
どうやらエミュレータではカメラ機能は使えないようです
ただ、PCにWebCameraの機能があればそれと連携してカメラを使うことはできるようです
http://wiki.usagee.co.jp/android/%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A7%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%92%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95

■ArrayAdapter
ListViewにTextView以外を表示する、カスタムする場合に使用する
・使い方
public class ProductListAdapter extends ArrayAdapter<Cell> {

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ...
  }

}
ArrayAdapterを継承した独自Adapterクラスを実装する
ジェネリックの型も自分でPOJOとなるクラス(上記の場合はCellクラス)を作成する
Cellクラスは各ListViewの項目に表示するスタイルを定義したクラスにする
また、cell.xmlみたいな感じでUIも作成する
getViewを必ずOverrideする、getViewは各項目が表示されるたびにコールされる
このgetView内でcell.xmlからオブジェクトを作成して各項目を表示する

■AsyncTask
Androidで非同期を実現するためのクラス、AndroidではUIの描画とHTTP通信などは別スレッドにする必要がある
・使い方
public class AsyncImageViewSetter extends AsyncTask<String, Void, Interger> {

  @Override
  protected Integer doInBackground(String... params) {
    ...
  }

  @Override
  protected void onPostExecute(Integer value){
    ...
  }

}
・呼び出し元
AsyncImageViewSetter image = new AsyncImageViewSetter(str);
image.execute();

AsyncTaskを継承したクラスを作成する
ジェネリックの<String, Void, Integer>はそれぞれ「非同期処理に渡せる型、進行中に更新する値の型、非同期処理終了後に渡す型」になります
doInBackgroundが実際に非同期する部分で上記のジェネリックだとStringの値が配列で渡されます
doInBackgroundが終了すると自動的にonPostExecuteが呼ばれdoInBackgroundの戻り値が渡ってきます
基本的にはUIへの操作はこのonPostExecuteで実施します
他にもonProgressUpdateというメソッドを実装すると非同期の実行中に状況を確認したりすることができます

2013年12月29日日曜日

【Android】java.io.FileNotFoundException: [file_path] open failed: ENOENT (No such file or directory)

Android内でプロパティファイルを読み込む際にFileNotFoundExceptionとなった
原因は以下だった

is = new FileInputStream(new File(path));
↓
is = this.getClass().getClassLoader().getResourceAsStream(path);
としプロパティファイルを「src」直下に配置する

Androidでnew Fileから読み込むと自動的に先頭に「/」が付いてしまっているようでうまくプロパティファイルが読み込めていなかった

2013年12月28日土曜日

ニフティクラウドmobile backendでAndroid(Nexus7)にプッシュ通知を送ってみた

今回作成したソースコードは以下で公開しています

https://github.com/kakakikikeke/android-ncmb-sample

以下にポイントを紹介します

●事前にeclipseとADT(Android Developers Tool)をインストールします

●gcm.jarは以下からダウンロードできます
gcm.jarはすでに開発が停止しているGCM用のクライアントライブラリです
ニフティクラウドmobile backendではgcm.jarが必要なようです
https://code.google.com/p/gcm/source/browse/gcm-client/dist/gcm.jar?name=gcm-1.0.2
ダウンロードしzipファイルを解凍し、./gcm-client/dist/gcm.jarをlib配下にコピーしビルドパスを追加します

●ProjectNumber(SenderId)を取得します
https://cloud.google.com/console#/project/[project_number]
ソースコード内でSenderIdとして利用します

●GoogleAPIKeyの取得
https://cloud.google.com/console#/project/[project_number]/apiui/credential
にてAPIKeyを取得します
ニフティクラウドmobile backendのダッシュボードのアプリ設定 -> プッシュ通知で取得したAPIキーを記載します

●ニフティIDの取得
ニフティクラウドモバイルmobile backendの申し込みにはニフティが提供するIDが必要です
無料で取得できるのでニフティのポータルサイトから取得します
http://www.nifty.com/

●エミュレータでは起動しません
エミュレータには「deviceToken」という端末個別のIDが存在しないためエラーとなります
at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:98)
実機にアプリを直接インストールして確かめる必要があります

いろいろと方法はありますが、自分はgmailに添付してインストールしました
eclipse -> プロジェクトを右クリック -> Export -> Export Android Application -> デスクトップに保存 -> apkファイルをGmailに添付して送信 -> Android端末で送信したGmailを受信 -> apkファイルをクリック -> アプリをインストール

●USBデバッグモードをONにします
以下を参考にUSBのデバッグモードをONにします
http://kakakikikeke.blogspot.jp/2013/12/nexus7usb.html

●Nexus7用のUSBドライバをインストールします
以下を参考にUSBドライバをインストールします
http://kakakikikeke.blogspot.com/2013/12/windowsnexus7usb.html

●プッシュ開封通知を送信する場合の注意
onCreateメソッド内で NCMBAnalytics.trackAppOpened(getIntent()); を実行しますが左記が呼ばれる条件として
  1. プッシュ通知開封時にバックグラウンドでアプリが起動していないこと
  2. プッシュ通知開封時にバックグラウンドでアプリは起動しているがプッシュ開封時に起動するActivityと同一のActivityが起動していないこと
のどちらかを満たしている必要があります
プッシュ通知を開封した際にActivityを指定できるので開封専用のActivityを用意しておくと確実に送信できるかと思います

■参考サイト

2013年12月27日金曜日

【Windows】Nexus7のUSBドライバをインストールする方法

■環境
WindowsXP 64bit
Nexus7(2012年発売モデル)
ADT 20131030

■事前準備
事前にADT(Android Developer Tools)をインストール必要があります
以下を参考にADTをインストールしてください
http://kakakikikeke.blogspot.jp/2012/10/windows7eclipseandroid.html
今回紹介する記事ではADTのインストールディレクトリを「C:\myinstallprogram\adt-bundle-windows-x86_64-20131030」とします

■ドライバのインストール
1. SDK Managerを起動
SDK Manager.exe をダブルクリックして起動します


2. Google USB Driverをインストール
Google USB Driver のチェックボックスをONにして「Install packages...」をクリックします


次に同意画面が表示されますので「Accept License」をONにして「Install」をクリックします
あとはインストールされるのを待ちます
※スクリーンショットはインストール後になります

3. USBデバッグをONにする
Nexus7はデフォルトではUSBデバッグがONになっていません
以下を参考にUSBデバッグをONにしてください
http://kakakikikeke.blogspot.jp/2013/12/nexus7usb.html

4. Nexus7をUSBでPCに接続
ドライバがないと言われるのでパスを指定してPC上にあるファイルからドライバをインストールします
一覧または特定の場所からインストールするを選択します


次の場所を含めるにドライバのパスを入力します

C:\myinstallprogram\adt-bundle-windows-x86_64-20131030\sdk\extras\google\usb_driver
先ほどGoogle USB Driverをインストールしたの以下のパスが存在しています(インストールしていない状態だとパスが存在しません)
入力後に「次へ」とするとドライバのインストール開始されます

エラーなくインストールされればドライバインストール完了です

■動作確認
eclipseでアプリを実行するときに実機が選択できるかどうか確認します
実行するアプリの「Run Configurations」を開きTargetタブで「Always prompt to pick device」にチェックを入れApplyします


その後Runでアプリを実行すると接続されている実機デバイスの一覧を選択する画面が表示されればWindows上で実機が認識されています


あとは実機を選択してOKをクリックすれば実機上でアプリが動作します、アプリは自動でインストールされインストール後に自動で立ち上がります
もちろんlogcatにも操作している間ログが流れるようになります

■Tips
MTPドライバのインストール
http://emobile.jp/products/gl07s/driver.html

2013年12月26日木曜日

Nexus7でUSBデバッグモードを有効にする方法

設定 -> タブレット情報 -> ビルド番号 -> 7回タップ

すると開発者「開発者 向けオプション」が新たに設定メニュー内に表示されるので「USBデバッグ」という項目のチェックボックスをONにしてください

設定 -> ストレージ -> 右上のメニュー -> USBでパソコンに接続 -> 「メディアデバイス(MTP)」のチェックをはずし「カメラ(PTP)」のチェックをONにする

USBデバッグとMTPモードを共存させることはできません
なのでMTPをOFFにしてPTPをONにします

これでUSBで接続時にデバッグモードとして接続されるようになります

2012年12月28日金曜日

【Android】AVDManagerで作成したAVDを好きな場所に保存する方法

環境変数

ANDROID_SDK_HOME

を設定すればその場所配下に「.android」が作成されます

2012年12月27日木曜日

PANIC: Could not open

ようやく原因がわかりました。。。

■問題
AVDManagerを起動してAVDを作成するがStartするとPANIC: Could not openとなりAVDを起動することができない

■解決策
C:\Users\username\Documents\.android

にあるフォルダを

C:\Users\username\.android

に移動します

■原因
AVDManagerでAVDを作成するとドキュメント配下にAVDのファイルが作成されるが
AVDManagerでStartとすると参照する先がusername直下の「.android」を参照しにいく


えーって感じだけど自分だけなのかなー。
起きた背景としてはeclipseを3.7から3.8にバージョンアップしたのと
SDKManagerからアップデートしただけなんだけどなー

まぁとりあえずはAVDを作成したらコピーして緊急対応したいと思います

2012年12月24日月曜日

githubに公開されているAndroidリポジトリをeclipseプロジェクトにする方法

すいません、この記事何度も追記しております。。。
20140603の追記がちょっと下にありますのでその手順が一番いいと思いますのでその手順を参考にしてみてください

  1. git cloneでリポジトリをローカルにコピー
  2. eclipseで適当な名前でいいのでAndroidプロジェクト(Android Application Project)をデフォルトの設定で作成
  3. cloneしたリポジトリのファイルから「libs」「res」「src」「AndroidManifest.xml」「proguard-project.txt」「project.properties」を作成したプロジェクト配下に上書きコピー
  4. プロジェクトをcleanする(おそらくエラー状態になります)
  5. src 配下のデフォルトで作成されたパッケージを削除します
  6. bin, gen フォルダを削除して再生成させます
  7. 一旦eclipseを再起動でエラーが解消されると思います

自分がやった限りだとこれが一番手っ取り早い気がします。

ただ、この場合eclipseからコミットできないんですよね。。。
コミットしたら再度上書き保存でプロジェクトclean。。。せつない。。。

なんか他に良い方法とかあるのかなー。。。

P.S 20140116
もっと簡単な方法があったので紹介します
  1. githubからandroidプロジェクトのリポジトリをcloneします
  2. eclipseを開き「Package Explorer」のどこかで右クリックしNew->Otherをクリックします
  3. ウィザードで「Android Project from Existing Code」を選択しNextをクリックします
  4. RootDirectoryの選択で先ほどcloneしたフォルダの1つ上のフォルダを選択します
  5. ※C:\git\android-ncmb-sampleにクローンしたら「C:\git」を選択します
  6. Finishをクリックすればプロジェクトの作成が完了です

P.S 20140131
上記の既存コードをプロジェクトにする方法ですが自分がやった感じだと3系のeclipseだとうまくいかないことがありました
ルートフォルダを選択してもうまくAndroidのプロジェクトを探してくれません
4系のeclipseだと問題なくインポートできたので4系にする必要があるかもしれません

P.S 20140603
いろいろ書きましたがやり方自体が間違っていたようです
以下の手順が一番簡単なインポート方法かと思います

1. githubから対象のandroidプロジェクトのリポジトリをcloneします
git clone https://github.com/kakakikikeke/android-data-trade-sample.git
※Windows環境でgitコマンドが使えない場合は「git for Windows」や「msysgit」をインストールしてください

2. eclipseを開き右上のパースペクティブの選択で「Git」を選択します
※eclipseでgitを使うにはプラグインで「EGit」をインストールする必要があります
※EGitのインストールはEclipse Marketplaceを使うのが簡単です


3. パースペクティブが切り替わったら左ペインから「Add an existing local Git repository」をクリックします


4. eclipseに追加するリポジトリを選択します、先ほどcloneしたディレクトリを入力して「Search」をクリックするとgitリポジトリを検索してくれます
リポジトリが見つかったチェックボックスをONにしてFinishをクリックします
※Searchしてもリポジトリが見つからない場合は検索しているディレクトリがcloneしたディレクトリになっているか確認してください


5. リポジトリが追加されたらリポジトリを選択し右クリックで「Import Projects...」を選択します


6. プロジェクトとしてインポートする方法を選択するウィザードが開きますので「Import existing projects」を選択しNextを押します


7. プロジェクトとしてeclipseにインポートする際のプロジェクト名が表示されますのでFinishをクリックしてインポート完了です


このとき「No Projects found」となって以下のようなエラーになる場合には


Githubからcloneしたリポジトリ内に「.classpath」と「.projects」ファイルがないのが原因です
大抵のJavaプロジェクトはGithubで公開するときに .classpath や .projects ファイルを .gitignore に記載してコミットしないようにしています
eclipseはこの2つのファイルを元にプロジェクトをインポートするので、この2つのファイルが存在しないとインポートできません
すでにeclipseに他のプロジェクトがある場合はその配下にある .classpath と .projects ファイルをコピーしてもいいですが、内容が全く同じではダメなので適宜書き換える必要があります
もし既存のプロジェクトもない場合に一度インポートするプロジェクトと同じプロジェクトをeclipse上に作成し、そのプロジェクト配下から .classpath と .projects をコピーしてくるのがいいかと思います
また、今回インポートしようしとしているプロジェクトはAndroidプロジェクトなので別途作成するプロジェクトはAndroidプロジェクトを作成してください
MavenプロジェクトやTomcatプロジェクトを作成すると .classpath や .projects の内容が大きく異なりますのでご注意ください(主に異なるのは .classpath になるかと思います)
.classpath と .projects をcloneしたリポジトリにコピーしたら.projectsファイルのを開いて<name>タグの部分を編集します
ここにはeclipseにインポートする際のプロジェクト名を記載する必要がありますので、既存のプロジェクト名と重複しないようにして好きなプロジェクト名を入力してください
編集が完了したら再度 6. の手順からインポートするとエラーとならずインポートできるかと思います

8. インポートが完了したらパースペクティブをGitからJavaに変更すればインポートしたプロジェクトが左ペインに表示されているかと思います
ここでプロジェクトにエラーが発生している場合は一度プロジェクトをcleanしてみるといいかもしれません
それでもエラーが発生している場合は「クラスパスの問題」や「足りていないライブラリある」「文字コードがおかしい」等いろいろな要因が考えられますので
eclipseのデバッグコンソールからエラー内容を確認して対処していくのがいいと思います