openintents から 無料で公開されている.

サポートされるセンサーは以下.
加速度計
時針
向き
温度
光
近接性
気圧
重力
線形加速度
回転ベクトル
ジャイロスコープ
できること
デバイスにセンサーイベントを送信
パソコン上及びデバイス上でそのイベントを記録
記録したイベントをデバイス上で再生
openintents から 無料で公開されている.

サポートされるセンサーは以下.
加速度計
時針
向き
温度
光
近接性
気圧
重力
線形加速度
回転ベクトル
ジャイロスコープ
できること
デバイスにセンサーイベントを送信
パソコン上及びデバイス上でそのイベントを記録
記録したイベントをデバイス上で再生

adb コマンドがめんどくさい場合は
コマンドを補完(completion)してもらいましょう.
何が補完できるか.
・オプション
・サブコマンド
・デバイスにインストールしているパッケージ名
・ローカル/リモートファイル名
・パソコンに接続しているデバイスシリアル名
...
# /* vim: set ai ts=4 ft=sh: */
#
# Copyright 2011, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
_adb() {
unset -v have
type $1 &> /dev/null && have="yes"
if [ "$have" != "yes" ]; then
return
fi
local where i cur serial
COMPREPLY=()
serial="${ANDROID_SERIAL:-none}"
where=OPTIONS
for ((i=1; i <= COMP_CWORD; i++)); do
cur="${COMP_WORDS[i]}"
case "${cur}" in
-s)
where=OPT_SERIAL
;;
-p)
where=OPT_PATH
;;
-*)
where=OPTIONS
;;
*)
if [[ $where == OPT_SERIAL ]]; then
where=OPT_SERIAL_ARG
elif [[ $where == OPT_SERIAL_ARG ]]; then
serial=${cur}
where=OPTIONS
else
where=COMMAND
break
fi
;;
esac
done
if [[ $where == COMMAND && $i -ge $COMP_CWORD ]]; then
where=OPTIONS
fi
OPTIONS="-d -e -s -p"
COMMAND="devices connect disconnect push pull sync shell emu logcat lolcat forward jdwp install uninstall bugreport help version start-server kill-server get-state get-serialno status-window remount reboot reboot-bootloader root usb tcpip"
case $where in
OPTIONS|OPT_SERIAL|OPT_PATH)
COMPREPLY=( $(compgen -W "$OPTIONS $COMMAND" -- "$cur") )
;;
OPT_SERIAL_ARG)
local devices=$(command adb devices 2> /dev/null | grep -v "List of devices" | awk '{ print $1 }')
COMPREPLY=( $(compgen -W "${devices}" -- ${cur}) )
;;
COMMAND)
if [[ $i -eq $COMP_CWORD ]]; then
COMPREPLY=( $(compgen -W "$COMMAND" -- "$cur") )
else
i=$((i+1))
case "${cur}" in
install)
_adb_cmd_install "$serial" $i
;;
pull)
_adb_cmd_pull "$serial" $i
;;
push)
_adb_cmd_push "$serial" $i
;;
reboot)
if [[ $COMP_CWORD == $i ]]; then
args="bootloader recovery"
COMPREPLY=( $(compgen -W "${args}" -- "${COMP_WORDS[i]}") )
fi
;;
shell)
_adb_cmd_shell "$serial" $i
;;
uninstall)
_adb_cmd_uninstall "$serial" $i
;;
esac
fi
;;
esac
return 0
}
_adb_cmd_install() {
local serial i cur where
serial=$1
i=$2
where=OPTIONS
for ((; i <= COMP_CWORD; i++)); do
cur="${COMP_WORDS[i]}"
case "${cur}" in
-*)
where=OPTIONS
;;
*)
where=FILE
break
;;
esac
done
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ $where == OPTIONS ]]; then
COMPREPLY=( $(compgen -W "-l -r -s" -- "${cur}") )
return
fi
_adb_util_complete_local_file "${cur}" '!*.apk'
}
_adb_cmd_push() {
local serial IFS=$'\n' i cur
serial=$1
i=$2
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ $COMP_CWORD == $i ]]; then
_adb_util_complete_local_file "${cur}"
elif [[ $COMP_CWORD == $(($i+1)) ]]; then
if [ "${cur}" == "" ]; then
cur="/"
fi
_adb_util_list_files $serial "${cur}"
fi
}
_adb_cmd_pull() {
local serial IFS=$'\n' i cur
serial=$1
i=$2
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ $COMP_CWORD == $i ]]; then
if [ "${cur}" == "" ]; then
cur="/"
fi
_adb_util_list_files $serial "${cur}"
elif [[ $COMP_CWORD == $(($i+1)) ]]; then
_adb_util_complete_local_file "${cur}"
fi
}
_adb_cmd_shell() {
local serial IFS=$'\n' i cur
local -a args
serial=$1
i=$2
cur="${COMP_WORDS[i]}"
if [ "$serial" != "none" ]; then
args=(-s $serial)
fi
if [[ $i -eq $COMP_CWORD && ${cur:0:1} != "/" ]]; then
paths=$(command adb ${args[@]} shell echo '$'PATH 2> /dev/null | tr -d '\r' | tr : '\n')
COMMAND=$(command adb ${args[@]} shell ls $paths '2>' /dev/null | tr -d '\r' | {
while read -r tmp; do
command=${tmp##*/}
printf '%s\n' "$command"
done
})
COMPREPLY=( $(compgen -W "$COMMAND" -- "$cur") )
return 0
fi
i=$((i+1))
case "$cur" in
ls)
_adb_shell_ls $serial $i
;;
/*)
_adb_util_list_files $serial "$cur"
;;
*)
COMPREPLY=( )
;;
esac
return 0
}
_adb_cmd_uninstall() {
local serial i where cur packages
serial=$1
i=$2
if [ "$serial" != "none" ]; then
args=(-s $serial)
fi
where=OPTIONS
for ((; i <= COMP_CWORD; i++)); do
cur="${COMP_WORDS[i]}"
case "${cur}" in
-*)
where=OPTIONS
;;
*)
where=FILE
break
;;
esac
done
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ $where == OPTIONS ]]; then
COMPREPLY=( $(compgen -W "-k" -- "${cur}") )
fi
packages="$(
command adb ${args[@]} shell pm list packages '2>' /dev/null 2> /dev/null | tr -d '\r' | {
while read -r tmp; do
local package=${tmp#package:}
echo -n "${package} "
done
}
)"
COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${packages}" -- "${cur}") )
}
_adb_shell_ls() {
local serial i cur file
local -a args
serial=$1
i=$2
if [ "$serial" != "none" ]; then
args=(-s $serial)
fi
where=OPTIONS
for ((; i <= COMP_CWORD; i++)); do
cur="${COMP_WORDS[i]}"
case "${cur}" in
-*)
where=OPTIONS
;;
*)
where=FILE
break
;;
esac
done
file="${COMP_WORDS[COMP_CWORD]}"
if [[ ${file} == "" ]]; then
file="/"
fi
case $where in
OPTIONS)
COMPREPLY=( $(compgen -W "$OPTIONS" -- "$cur") )
_adb_util_list_files $serial "$file"
;;
FILE)
_adb_util_list_files $serial "$file"
;;
esac
return 0
}
_adb_util_list_files() {
local serial dir IFS=$'\n'
local -a toks
local -a args
serial="$1"
file="$2"
if [ "$serial" != "none" ]; then
args=(-s $serial)
fi
toks=( ${toks[@]-} $(
command adb ${args[@]} shell ls -dF ${file}"*" '2>' /dev/null 2> /dev/null | tr -d '\r' | {
while read -r tmp; do
filetype=${tmp%% *}
filename=${tmp:${#filetype}+1}
if [[ ${filetype:${#filetype}-1:1} == d ]]; then
printf '%s/\n' "$filename"
else
printf '%s\n' "$filename"
fi
done
}
))
# Since we're probably doing file completion here, don't add a space after.
if [[ $(type -t compopt) = "builtin" ]]; then
compopt -o nospace
fi
COMPREPLY=( ${COMPREPLY[@]:-} "${toks[@]}" )
}
_adb_util_complete_local_file()
{
local file xspec i j
local -a dirs files
file=$1
xspec=$2
# Since we're probably doing file completion here, don't add a space after.
if [[ $(type -t compopt) = "builtin" ]]; then
compopt -o plusdirs
if [[ "${xspec}" == "" ]]; then
COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -f -- "${cur}") )
else
compopt +o filenames
COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -f -X "${xspec}" -- "${cur}") )
fi
else
# Work-around for shells with no compopt
dirs=( $(compgen -d -- "${cur}" ) )
if [[ "${xspec}" == "" ]]; then
files=( ${COMPREPLY[@]:-} $(compgen -f -- "${cur}") )
else
files=( ${COMPREPLY[@]:-} $(compgen -f -X "${xspec}" -- "${cur}") )
fi
COMPREPLY=( $(
for i in "${files[@]}"; do
local skip=
for j in "${dirs[@]}"; do
if [[ $i == $j ]]; then
skip=1
break
fi
done
[[ -n $skip ]] || printf "%s\n" "$i"
done
))
COMPREPLY=( ${COMPREPLY[@]:-} $(
for i in "${dirs[@]}"; do
printf "%s/\n" "$i"
done
))
fi
}
if [[ $(type -t compopt) = "builtin" ]]; then
complete -F _adb adb
else
complete -o nospace -F _adb adb
fi
Cross Reference: /sdk/bash_completion/adb.bash
以下のようなコンソール出力になります.
「adb」と文字を入力したあとのひとつスペースに注意しながらの
~ $ adb <TAB> -d devices help pull shell usb -e disconnect install push start-server version -p emu jdwp reboot status-window -s forward kill-server reboot-bootloader sync bugreport get-serialno logcat remount tcpip connect get-state lolcat root uninstall ~ $ adb -<TAB> -d -e -p -s ~ $ adb -s 01f9739f4fd1471c 192.168.10.101:5555 ~ $ adb push a.apk /<TAB> /acct/ /dev/ /init.environ.rc /mnt/ /sdcard/ /ueventd.rc /cache/ /etc/ /init.mako.rc /persist/ /seapp_contexts /vendor/ /charger /file_contexts /init.mako.usb.rc /proc/ /sepolicy /config/ /firmware/ /init.rc /property_contexts /storage/ /d/ /fstab.mako /init.superuser.rc /res/ /sys/ /data/ /init /init.trace.rc /root/ /system/ /default.prop /init.cm.rc /init.usb.rc /sbin/ /ueventd.mako.rc ~ $ adb uninstall <TAB> Display all 217 possibilities? (y or n) android com.facebook.orca com.adamrocker.android.input.simeji com.facebook.pages.app com.adobe.flashplayer com.farproc.wifi.analyzer com.adobe.reader com.gmail.jp.raziko.radiko com.alensw.PicFolder com.google.android.apps.adm com.amazon.mp3 com.google.android.apps.ads.publisher com.americanexpress.android.acctsvcs.japan com.google.android.apps.authenticator2 com.andrew.apollo com.google.android.apps.books com.android.apps.tag com.google.android.apps.chromecast.app
特に, ローカル/リモートディレクトリの補完が快適です.
そんな bash の 補完(completion)なスクリプトは他にもいろいろ見つかります.
android-completion/android at master · mbrubeck/android-completion · GitHub
metasystem/modules/android/shell/bash-completion.sh at master · garethstockwell/metasystem · GitHub
adb - romannurik-code - Roman's miscellaneous sample code - Google Project Hosting
お試しあれ.
あちこちに, 似たようなバージョン的な記述あります Android Studio.


プロジェクトの改修や移動などで変更しなければならないとき
どこを編集したらいいのか.
いや, 同期されるのか
いや, 優先順位が決まっているのか
どうなのか よくわかりません.
項目もたくさんあります.
どんなのあるか並べてみます.
[Quick Start]-[Configure]-[Project Default]-[Settings]
[File]-[Other Settings]-[Default Settings]
+ Compiler
+ Java Compiler
+ Project byte code version(JDK Default(1.7))

[Quick Start]-[Configure]-[Project Default]-[Project Structure]
[File]-[Other Settings]-[Default Project Structure]
+ Project Settings
+ Project
+ Project SDK(Android API 19 Platform)
+ Project language level(7.0 - Diamonds, ARM, multi-catch etc.)
+ Platform Settings
+ SDKs
+ Build target(Android 2.3.3)
+ JDK location(/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home)


[File]-[Project Structure]
+ Project Settings
+ Modules
+ Properties
+ Android Plugin Version(0.9.1)
+ Compile Sdk Version(19)
+ Build Tools Version(19.0.3)
+ Dependencies
+ (com.android.support:support-v4:19.0.0)
+ (com.android.support:appcompat-v7:19.0.0)
+ (com.google.android.gms:play-service:+)
+ Platform Settings
+ Android SDK
+ JDK location(/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home)

<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="19" />
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:0.9.1'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile 'com.android.support:support-v4:19.0.0'
compile 'com.android.support:appcompat-v7:19.0.0'
compile 'com.google.android.gms:play-services:+'
}
設定項目やエラー後に再設定しようとしても, 今度は, 設定画面にたどりつけなかったりします.
面倒なので表にしてみます.
Google Play Store にアップすると拒否られる.
なんかうまくいかないので小一時間.
その際, こんなダイアログメッセージが表示される.
For Gradle-based projects, the signing configuration should be specified in the Gradle build scripts. Configure your signing configurations as described in the user guide: http://tools.android.com/ tech-docs/new-build-system/ user-guide #TOC-Signing-Configurations
Gradleのベースのプロジェクトは、署名の設定は、Gradleのビルドスクリプトで指定する必要があります。ユーザーガイドに記載されているように、あなたの署名の設定を構成しましょう。
調べてみると, buiid.gradle にパスワードを記述したり, コンソールからのビルドでそれらを入力させたりの方法がたくさん見つかるのだが, できれば, プレーンなテキストでキーストアのパスワードを build.gradle にも書きたくない.
キーストアのパスワードマネージャが, せっかく Androis Studio についてるのでそれを使いたい.
以下で, それを満たせる.

何かと使えるようなのでメモ.
language: java
jdk:
- openjdk7
- openjdk6
- oraclejdk7
- oraclejdk8
branches:
only:
- dev
- master
env:
global:
- ANDROID_SDK_VERSION=“r22.6.2"
before_install:
# required libs for android build tools
# Update a system for ia32 libraries
- sudo apt-get update -qq
- if [ `uname -m` = x86_64 ]; then sudo apt-get update; fi
- if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch; fi
##
# Gradle
# newer version of gradle
wget http://services.gradle.org/distributions/gradle-1.11-bin.zip
unzip -qq gradle-1.11-bin.zip
export GRADLE_HOME=$PWD/gradle-1.11
export PATH=$GRADLE_HOME/bin:$PATH
# just to test gradle version, against our provided one
- gradle -v
##
# Android SDK
# newest android SDK
- wget http://dl.google.com/android/android-sdk_${ANDROID_SDK_VERSION}-linux.tgz
- tar -zxf android-sdk_${ANDROID_SDK_VERSION}-linux.tgz
- export ANDROID_HOME=`pwd`/android-sdk-linux
- export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
# manually set sdk.dir variable, according to local paths
- echo "sdk.dir=$ANDROID_HOME" ]]> local.properties
##
# Android Components
# Install required components.
# For a full list, run `android list sdk -a --extended`
- echo yes | android update sdk --filter platform-tools --no-ui --force ]]> /dev/null
- echo yes | android update sdk --all --filter build-tools-19.0.3 --no-ui --force ]]> /dev/null
- echo yes | android update sdk --filter android-19 --no-ui --force ]]> /dev/null
- echo yes | android update sdk --filter extra-android-support --no-ui --force ]]> /dev/null
- echo yes | android update sdk --filter extra-android-m2repository --no-ui --force ]]> /dev/null
- echo yes | android update sdk --filter extra-google-m2repository --no-ui --force ]]> /dev/null
# for gradle output style
export TERM=dumb
# Create and start emulator
- echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
- emulator -avd test -no-skin -no-audio -no-window &
install:
- gradle check
after_install:
before_script:
- chmod +x wait_for_emulator
- ./wait_for_emulator
script:
- sudo chmod +x gradlew
- ./gradlew connectedCheck lint
- ./gradlew connectedInstrumentTest
after_script:
after_success:
- ./gradlew uploadArchives
after_failure:
wait_for_emulator
#!/bin/bash
bootanim=""
failcounter=0
until [[ "$bootanim" =~ "stopped" ]]; do
bootanim=`adb -e shell getprop init.svc.bootanim 2>&1`
echo "$bootanim"
if [[ "$bootanim" =~ "not found" ]]; then
let "failcounter += 1"
if [[ $failcounter -gt 3 ]]; then
echo "Failed to start emulator"
exit 1
fi
fi
sleep 10
done
echo “Done”
Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
Travis CI: Travis CI's use of GitHub API Scopes