Twitterに画像を添付して起動、成功、ところが

 Eclipse の復旧作業もようやく終わりました。
 今回のクラッシュの原因はわからずじまいで、役に立つ情報もなく申し訳ない。最後の手段は「再インストールしてプロジェクトをインポートする」であることは間違いなさそうです。
 復旧した Eclipse の日本語化はしていません。すると何かしら不具合が出そうな予感がするので英語表記のまま使っています。予感が結構当たるのです。
 
 アプリ作成の再開です。
 
 撮った写真をその場でスライドパズル化するアプリ「秘密のスライドパズル(仮題)」作成も佳境に入り、今は、ツイッター連携とカメラ周りをいじっております。
 device-2014-07-10-000117
 こんな画面からツイッターボタンを押すと
 device-2014-07-10-000222
 画像を添付して Twitter アプリが起動します。やれば出来るもんだね。
 
 早速、このままツイートしてみて、ツイートされた画像を保存して、アプリに読み込み、さあパズルとして動くかな・・・とテストしたら、ただの画像としか認識しません。
 調べてみると Twitter に添付された画像は jpg に変換されてしまうのですね。これは、困る。

 スライドパズル化された写真には、解答手順を埋め込んであるので、pixel 情報が変わってしまうと復元できないんですよ。圧縮してしまう jpg ぢゃダメなんです。png ぢゃないとダメなんですよ。あぁうあぁああ・・(号泣)。
 
 5分ほど打開策を考え、導かれた結論は「諦める」。なんと潔いのでしょう。
 使われぬコードを載せておきます。

public void tweet(final String message, final String path){
	Intent intent = new Intent(Intent.ACTION_SEND);
	intent.setType("image/png");
	intent.putExtra(Intent.EXTRA_TEXT, message);
	intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path));
	String appName = "com.twitter.android"; 

	final PackageManager pm = getPackageManager();
	final List<?> activityList = pm.queryIntentActivities(intent, 0);
	int len = activityList.size();
	for(int i = 0; i < len; i++){
		final ResolveInfo app = (ResolveInfo)activityList.get(i);
		if((app.activityInfo.name.contains(appName))){
			final ActivityInfo activity = app.activityInfo;
			final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
			intent.setComponent(name);
			startActivity(intent);
			return;
		}
	}
}

 Intent 経由の画像添付には、いろいろな手法があるようなのですが、Twitter 狙い撃ちで画像を添付させる方法は、調べた限りこれが良さげ。
 
 そうそう、以前「カメラの設定がどうやっても横向きにしかならない。縦にしようとするとプレビュー画面が細長くなってしまう。・・・そこで、カメラ画面以外はダミーの Entity に貼り付けて270度回転させて表示するといった回りくどいことやっています」というのは、勘違い(というか、API 8 からターゲットにしていたから)。
 API 9 以降なら mCamera.setDisplayOrientation(90); であっさり縦配置になりました。

 
 アプリ作成は計画的に。