APIが提供されていないので、Webスクレイピングしか方法が無いようだ。
Android market用として提供されたものも使えそう。
perl -MCPAN -e 'install Module::Pluggable' perl -MCPAN -e 'install Test::Pod' perl -MCPAN -e 'install Data::Dumper' perl -MCPAN -e 'install List::Util' perl -MCPAN -e 'install Time::HiRes' perl -MCPAN -e 'install Compress::Raw::Zlib' perl -MCPAN -e 'install Module::ScanDeps' perl -MCPAN -e 'install Module::Install' perl -MCPAN -e 'install Test::Fatal' perl -MCPAN -e 'install HTML::TreeBuilder::LibXML' perl -MCPAN -e 'install Web::Scraper' perl -MCPAN -e 'install LWP::Protocol::https' git clone https://github.com/higemaru/p5-www-googleplay-scraper.git cd p5-www-googleplay-scraper perl Makefile.PL make sudo make install
emulator -avd <avd_name> -gpu on
cancelButton.setFocusable(true); cancelButton.setFocusableInTouchMode(true); cancelButton.requestFocus();
EditText Height = new EditText(this); // NG: Height.getText().lenght() == 0 // NG: Height.getText().equals("") // OK: Height.getText().toString().equals("") if ( Height.getText().toString().lenght() == 0 ) { // 空の処理 }
adb help
adb connect 192.168.1.x:5555
adb kill-server
adb shell
adb push d:\hoge.txt /sdcard/
adb pull /sdcard/hoge.txt d:\
adb install myapp.apk #再インストール adb install -r myapp.apk #SDカードへインストール adb install -s myapp.apk
adb uninstall com.example.myapp # data, cacheは保持 adb uninstall -k com.example.myapp
設定画面などの保存に利用される。永続データ保存方法の一つ。1プリファレンス=1 XMLファイルとして、key,valueが保存される。
デフォルトのプリファレンスは常にMODE_PRIVATEで、1アプリ1個以上のプリファレンスを保存できる。
// package com.example.myapp; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); // 任意のプリファレンス名を指定できるが、デフォルトプリファレンスを取得する場合 SharedPreferences prefs = getSharedPreferences("com.example.myapp_preferences", MODE_PRIVATE);
data/data/com.example.myapp/shared_prefs/com.example.myapp_preferences.xml
String str; try{ Context context = createPackageContext("パッケージ名",0); SharedPreferences prefs = context.getSharedPreferences("プリファレンス名",MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE); str = prefs.getString("key","")); }catch (NameNotFoundException e){ e.printStackTrace(); }
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); // または getSharedPreferences("キー", MODE_PRIVATE).edit(); editor.clear().commit();
// Context.getApplicationContext() // Activity.getApplication() public static Context context; public void onCreate(Bundle savedInstanceState){ context = getApplicationContext(); }
public static final HashMap<String, String> map = HashMap<String, String>(); static int bar=0; static{ // クラスロード時に一度だけ実行する処理を記述 bar+; }
String packageName = getCallingActivity().getPackageName(); String className = getCallingActivity().getClassName();
// 文字指定 Uri uri=Uri.parse("market://search?q=検索文字"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); // アプリ指定(一つしか出ないはず) Uri uri=Uri.parse("market://search?q=pname:com.example.myapp"); // 開発者指定 Uri uri=Uri.parse("market://search?q=pub:開発者名");
Uri uri=Uri.parse("market://details?id=com.example.myapp"); // GMAIL例 com.google.android.gm Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
Uri uri = Uri.fromParts("package","com.example.myapp",null); Intent intent=new Intent(Intent.ACTION_DELETE, uri); startActivity(intent);
// 言語と入力 > 入力方法の設定 Intent intent = new Intent("android.settings.INPUT_METHOD_SETTINGS"); startActivity(intent); // 言語と入力 > テキスト読み上げの設定 Intent intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.TextToSpeechSettings"); startActivity(intent);
String classname = MyClass.class.getSimpleName(); // MyClass.class
package com.example.myapp; String classname = MyClass.class.getPackage().getName(); // com.example.myapp
package com.example.myapp; String packagename = context.getPackageName(); // com.example.myapp
import android.os.Debug; if( Debug.isDebuggerConnected() ){ // デバッグ環境 }
// 実機とwifiで接続 adb connect 192.168.1.x:5555 // 実機との接続を終了 adb kill-server
... <service android:name="service SampleService" android:exported="false"> ...
突然エミュレーターが「unknown option: --useaudio」のエラーで起動しなくなる事がある。オプション消しても変わらない
<Button android:id="@+id/okButton" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@android:string/ok" /> <Button android:id="@+id/cancelButton" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@android:string/cancel" />
<TableLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:stretchColumns="1" android:shrinkColumns="1" />
setResult( RESULT_OK); // or RESULT_CANCELED, 戻り値が必要な場合 finish();
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return false; }
Intent intent = new Intent( this.getApplicationContext(), NextPage.class); intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP ); startActivity( intent );
<activity android:name=".MyAppActivity" android:label="@string/app_name" android:noHistory="true">
正しく設定していないと、「DNSが引けずにネットに繋がらない」「時計が狂っていてWebサービス系APIでエラーが出る」等々が発生する
adb shell getprop net.dns1 getprop net.dns2 空白だったり、不明なDNSの場合は事前にメモしておいたDNSを設定 setprop net.dns1 192.168.1.1
/mnt/sdcard/Android/data/<package_name>/files/
Memo/Arduino と連動するなど。
Bitmap c = Bitmap.createBitmap(480, 320, Bitmap.Config.ARGB_8888); Canvas offScreen = new Canvas(c); Bitmap a = BitmapFactory.decodeFile("a.png"); offScreen.drawBitmap(a, null, null, null); Bitmap b = BitmapFactory.decodeFile("b.png"); offScreen.drawBitmap(b, null, null, null); OutputStream outputStream = new FileOutputStream("c.jpg"); c.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); outputStream.close();
svn propedit svn:ignore . ---- *.apk *.ap_ *.dex *.class bin gen local.properties .classpath .project .settings ----