開発環境はAndroid Studioで言語はJavaでTwitterクライアントを作成しています。
Twitterのライブラリとしては公式のTwitterKit3.Xを使用しております。
http://bagpack.hatenablog.jp/entry/2015/05/15/115212を参考に公式のTwitterKitを拡張しました。
画像付きツイートをしたく実装して、成功したのですが、画像アップロードまでに時間がかかりすぎてしまいます。
アルバムから画像取得→bitmapに変換→byte配列→base64に変換の流れでTwitteにアップロードしています。
今回API仕様(https://syncer.jp/Web/API/Twitter/REST_API/POST/media/upload/)を見てパラメータmedia_dataにbase64化したものを送っています。
base64にするまでに時間がかかっているのかもしれません、どうやれば高速にできるのでしょうか。。
他のTwitterクライアントでやってみるとすぐアップロードされていてすぐツイートができます。
補足
API仕様を見ると他の選択肢としてパラメータmediaに画像の、生のバイナリデータを送るというものがありましたが生のバイナリデータがわからず・・・
// 遷移先から戻ってきたとき(今回ギャラリーから) @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { if (requestCode == READ_IMAGE_CODE && resultCode == Activity.RESULT_OK) { if (resultData != null) { // 非同期 new AsyncTask<String,String,String>() { @Override protected String doInBackground(String... string) { Uri uri = resultData.getData(); Bitmap bitmap = null; try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri); } catch (IOException e) { e.printStackTrace(); } ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] byteArray = byteArrayOutputStream .toByteArray(); mediaUpload(Base64.encodeToString(byteArray, Base64.NO_WRAP)); return null; } }.execute(); } } } // 画像アップロード private void mediaUpload(String base64) { Log.v("base64",base64); CustomApiClient customApiClient = new CustomApiClient(TwitterCore.getInstance().getSessionManager().getActiveSession()); CustomService customService = customApiClient.getCustomService(); // 第一引数 media 第二引数 media_data 第三引数 additional_owners Call<Media> call = customService.upload(null,base64,null); call.enqueue(new Callback<Media>() { @Override public void success(Result<Media> result) { Log.v("mediaUploadResult","success"); // 画像アップロードに成功したら取得したメディアIDを引数に入れツイートする } @Override public void failure(TwitterException exception) { Log.v("mediaUploadResult","failure"); } }); }
あなたの回答
tips
プレビュー