本日(2011年11月9日)、gTranslator v1.2.5をリリースいたしました。
以前は、Facebook SDK for Androidが提供するFeed Dialogを使って、翻訳結果をウォールに投稿する機能を実装していましたが、Feed Dialogのmessageプロパティが無効になっていたで、Feed Dialogに翻訳結果を初期表示することができなくなったことを知ったので、あらたに「Facebookに投稿する」画面を作って、そこからウォールに投稿できるようにしてみました。
また、Facebook SDK for Androidが更新されましたので、あわせてSDKを更新しています。
Facebookのウォールに投稿する部分の実装は、Facebook SDK for Androidが更新されましたのサンプルソースとほぼ同様です。
翻訳結果はIntentに設定して、翻訳画面から「Facebookに投稿する」画面に受け渡します。
●翻訳結果を渡す側のソース(翻訳画面側)
final Intent intent = new Intent(gTranslator.this, FacebookActivity.class); intent.putExtra("Translated", "翻訳結果"); intent.setAction(Intent.ACTION_VIEW); startActivity(intent);
●翻訳結果を受ける側のソース(「Facebookに投稿する」画面側)
// 翻訳画面から受け渡されたIntentを取得 Intent intent = getIntent(); String translated = ""; // 翻訳結果を取得 if (intent != null) { translated = (intent.getStringExtra("Translated")); } EditText txtMessage = (EditText)findViewById(R.id.message); // 画面にデフォルト表示する if (!translated.equals("")) { txtMessage.setText(translated); }
画面遷移は以下のようになります。
タイトルバーをActionBar風にしてみました。
ここで、1つ注意点があります。Facebook SDK for Androidが更新されましたで、Debug用のキーハッシュを作成しましたが、リリースの際には、リリース用のキーハッシュが必要なので、
Facebook facebook = new Facebook("xxxxxxxxxxxxxxx"); AsyncFacebookRunner runner = new AsyncFacebookRunner(facebook);
のxxxxxxxxxxxxxxx部分は、アプリケーション用の正しいアプリIDに戻さないといけません。
それと、以前に、gTranslatorにFacebookのウォールに投稿する機能を追加してみた(Facebook登録編)で記載したキーハッシュの作成コマンドには誤りがありました。
誤)
keytool -exportcert -keystore livecast.keystore | openssl sha1 -binary | openssl base64
正)
keytool -exportcert -alias エイリアス -keystore keystoreファイル名 | openssl sha1 -binary | openssl base64
「エイリアス」の部分には、署名つきのアプリケーションをパッケージングする際に使用するkeystoreのエイリアスを、
※ こちらの画面に入力する「Alias」の部分。
「keystoreファイル名」のところにはそのファイル名を指定します。
※ こちらの画面に入力する「Location」の部分。
いままで間違えたやり方で作成したキーハッシュで問題ありませんでしたので、Feed Dialogを使用している場合には、このキーハッシュは(厳密には)チェックされていないような気がします。
さらに、デバッグ中などで、短時間に何度もウォールに投稿すると、
Feed action request limit reached.
というようなエラーが発生して、回数制限をオーバーしてしまうことがありますのでご注意ください。
これでまた、翻訳結果を簡単にFacebookのウォールに投稿できるようになりました。
是非、試してみてください!
gTranslator