折れ線グラフが必要なAndroidアプリを作っているので、サーバーから(x、y)座標が必要です。ネットワーク上でたくさんの(x、y)座標を送信する方法は?
私たちは、Ruboku on Rails with Herokuを使ってバックエンドを構築しています(ただし、Google AppEngineも検討していますが)。
ネットワーク上で数百(x、y)の座標(JSON?でエンコードされています)をAndroidデバイスに送信する最良の方法は何ですか?
折れ線グラフが必要なAndroidアプリを作っているので、サーバーから(x、y)座標が必要です。ネットワーク上でたくさんの(x、y)座標を送信する方法は?
私たちは、Ruboku on Rails with Herokuを使ってバックエンドを構築しています(ただし、Google AppEngineも検討していますが)。
ネットワーク上で数百(x、y)の座標(JSON?でエンコードされています)をAndroidデバイスに送信する最良の方法は何ですか?
大量の帯域幅が懸念される場合は、座標をバイナリ形式にパックします。例えば、(x、y)の2-dグリッドが32ビット整数として座標を取ると仮定します。ルビーの使用:あなたは折れ線グラフを生成しているので
points = [[107897,598654], [876432,30001], [15,754689]]
# => [[107897, 598654], [876432, 30001], [15, 754689]]
# json size
points.to_json.length
# => 44
# make a byte stream of points
data = points.flatten.pack("V*")
# => "y\xA5\x01\x00~\"\t\x00\x90_\r\x001u\x00\x00\x0F\x00\x00\x00\x01\x84\v\x00"
# binary size
data.length
# => 24
# read a byte stream to points
points = data.unpack("V*").each_slice(2).to_a
# => [[107897, 598654], [876432, 30001], [15, 754689]]
あなたの整数が常に16ビットの内側に収まるならば、より小さいパックフォーマットも使用してください。明らかに、各32ビット整数は、アスキーではより少ないスペースを消費する1000未満の場合でも、4バイトのスペースを消費します。 – d11wtq
エンコードする前に値をイントロスペクションして、適切なパック形式を選択することもできます。問題はバイトを解凍する方法を知っていることです。基本的なアプローチは、ストリームに1バイトのヘッダを付加することであり、これは列挙型、例えば0 = 8ビット、1 = 16ビット、2 = 24ビット、3 = 32ビットを表す。そのバイトを読み込んだら、それに応じて残りの文字列を展開します。 – d11wtq
JSON
またはXML
でエンコードするのが最善の方法です。
私はルビーの経験はありませんが、改行で区切られた座標を、XMLで(おそらく、ルビスクリプト内の各座標に対して<coordinate use='errorbar'>1,2</coordinate>
の行に沿って)配列のエントリとしてあなたのXML出力は、各ラインを取得し、その後、あなただけのXMLを解析する必要があります
public static String[] download(String web_url) throws IOException{
URL website = new URL(web_url);
BufferedReader in = new BufferedReader(
new InputStreamReader(
website.openStream()));
String input;
ArrayList<String> stringList = new ArrayList<String>();
while ((input = in.readLine()) != null) {
stringList.add(input);
}
String[] itemArray = new String[stringList.size()];
String[] returnedArray = stringList.toArray(itemArray);
return returnedArray;
}
// Of course, call this function with web_url as the URL to your script
を:して使用してアンドロイドで結果をダウンロードしてください。特別なデータは必要ないと確信しているならば、XMLを解析する必要がなくプレーンテキストで送ることができます。
を、あなたは、Googleのチャートサービスの単純なものからインスピレーションを取りたいとtext encodingsを延長することがあります。主なテイクアウトは、実際の値を送信する必要はないということです。それらの相対的な値と限界値だけです。
もしそれが1行だとすると、_two_(x、y)の座標が必要なのでしょうか? – paislee
[スタックオーバーフローはあなたの個人研究のアシスタントではありません](http://meta.stackexchange.com/a/128553/172496) –
これは線グラフですので、数百の点があります。このようにhttp://www.mathgoodies.com/lessons/graphs/images/line_example1.jpg – BinRoot