2014年7月27日日曜日

自作Twitterクライアント作成の記録(27)Twitterクライアントを作るなら最初に見るべき項目

タイトルにはこう書いてますが、こいつの存在を知ったのはつい最近です。

実は少し前にニコニコで生放送しながら開発進めていると同じようにクライアント作ってる人が来たんですよ、無論いろいろ話をしていたんですが突然「Developer Display Requirements」
という単語が飛んできたわけですよ。
今回はその「Developer Display Requirements」(この先DDRと略します)についてのお話です。

・DDRとは何ぞ?

端的にいうとTwitter社によるクライアントにおけるツイートの表示の仕方の指針。

詳しいことは
Developer Display Requirementsが更新されたので再び訳してみた
か原文の
Developer Display Requirements
を見てもらうとして、つまりはクライアント作るならこれに準じてね?ってことですはい。(一応例外もあるらしい)
守らないとアプリケーションキーが剥奪されるとか、でも全部クリアしてるクライアントあまり見ないんだが・・・・・(あるにはある)

まあそれは置いておいて、一応DDRが設定されている目的としては
「使用環境の一貫性の確保」
みたいですが
そもそも公式のUIやシステムが気に入らないからクライアントをだn(ry
って文句いっても仕方ないね。

とにかく、クライアント作るなら一度は目を通しておくと幸せになるかも(ならないかも)
ということで今回はこの辺で

2014年7月11日金曜日

自作Twitterクライアント作成の記録(26)SDKのアップデートでちょっと困った件

どうも、ここ最近またこいつの開発にはまる私ですよ。
今回はSDKのアップデートで起きたちょっとしたことの解決法をメモしておきたいと思います。


2014年7月9日水曜日

自作Twitterクライアント作成の記録(25)GooglePlayにアプリを置いてきた件

やったことはタイトル通りです、ついに一般公開してしまいました。
まだまだ機能は少ないですがこれから使える機能を増やした上にどんどん使いやすくできたらいいですね。

デベロッパコンソールからはこんな風に見えてます。
ここにDLカウンタが付く日はいつになるのやら。

と、報告はここまでにして、ちょっと公開する際に手間取ったことをいくつか忘れないうちにメモしておきます。


2014年7月6日日曜日

自作Twitterクライアント作成の記録(24)複数画像の扱いとツイート可能文字数の表示

ほんの少し前に私のフォロワーさんから複数画像の投稿に対応しないの?
というメッセージをいただいたのでさっそく実装してきました。

まず現状のライブラリで複数画像の投稿ができるのかと思い調べてみたら。

Twitter4Jで複数の画像をアップロードしてツイートする方法
という何ともドンピシャな内容が書かれたサイトにありつくことに。
これを見て思ったのは、どうやら一枚一枚アップロードしてから後でリンクを張るみたいな構造になってるんですね。こういうのも触れてみて初めてわかることなのかもね・・・
というのは置いておき、無論アップロードということなので通信の動作が入るため別のスレッド等でこの処理を書かないといけないわけですが、まあツイートを投稿する非同期のメゾットにぶち込んでおけば問題なく動くと思います。

で、このサイトで宣言されているpath1,path2という変数Fileという型ではなくStringのため
   uri= data.getData(); //選択した画像の受け取り
   ContentResolver cr = getContentResolver();
String[] columns = { MediaStore.Images.Media.DATA };
Cursor c = cr.query(uri, columns, null, null, null);

c.moveToFirst();   
            if(path1 == null){
    path1 = c.getString(0);
   }else if(path2 == null)
   {
    path2 = c.getString(0);
   }else if(path3 == null)
   {
    path3 = c.getString(0);
   }else if(path4 == null)
   {
    path4 = c.getString(0);
   }
という風にそのままpathとでも名前をつけた変数に代入しておくといいと思います。

ちなみに
             Intent intent = new Intent(Intent.ACTION_PICK);
         intent.setType("image/*");
         startActivityForResult(intent, 1);
等をボタン等のイベントに書いておくとギャラリーが開いて
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  super.onActivityResult(requestCode, resultCode, data);
  if (resultCode != RESULT_OK) return;

  if (requestCode == 1) {
   uri= data.getData(); //選択した画像の受け取り
   ContentResolver cr = getContentResolver();
String[] columns = { MediaStore.Images.Media.DATA };
Cursor c = cr.query(uri, columns, null, null, null);

c.moveToFirst();
if(path1 == null){
path1 = c.getString(0);
}else if(path2 == null)
{
path2 = c.getString(0);
}else if(path3 == null)
{
path3 = c.getString(0);
}else if(path4 == null)
{
path4 = c.getString(0);
}
  }
  }
これでギャラリーで選択した画像が取れるみたいです。

1つ向こうのサイトで書いてることで気を付けておくこと
update.setMediaIds(new long[2]{media1.getMediaId(), media2.getMediaId()});
これの[2]の部分を[]にしないとコンパイルが通りません何故か。
配列定数は、イニシャライザーにおいてのみ使用可能です。
とか出て怒られます。
配列定数はわかるけど、イニシャライザーってなんだ?
今度調べよう。

さてタイトルにあるもう一つの項目文字数表示。
こちらも何故かドンピシャなものが
[Android] EditTextの入力文字数を動的にカウント表示する方法
こちらのソースを参考にさせていただきました。
あとは表示の仕方を自分で決めてしまうだけ。ね、簡単でしょ?(簡単じゃないフラグ)
まあとにかく、徐々にクライアントとして必要な機能はついてきているわけですよ。

そろそろGooglePlayで公開してもいいかな。
でもその前にアイコンと、アプリ名をもっとセンスのいいものに・・・・誰か案をくださいお願いしま(ry

最後に
え?DMでの画像投稿はどうしたって?
まだだよちくしょーーめ!