2つのデバイスがwifi directを使用して接続し、JSONファイル形式のメッセージを1つのデバイスから別のデバイスに送信して解析できるアプリケーションを作成しようとしていますそのファイルをテキストビューに変換します。これまでのところ、私はそれが非常に難しいことを知っていて、私のプロジェクトの「簡単な」部分から始めたいと思っているので、Wi-Fiの部分については心配していません。私は今までこのコードを持っています。JSONファイルを作成し、Wi-Fiダイレクトを使用して他のデバイスに送信
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONObject;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
EditText edtx1;
TextView txvw1;
TextView txvw2;
TextView txvw3;
TextView txvw4;
TextView txvw5;
Button btn;
String Message;
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtx1 = (EditText) findViewById(R.id.editText1);
txvw1 = (TextView) findViewById(R.id.textView1);
txvw2 = (TextView) findViewById(R.id.textView2);
txvw3 = (TextView) findViewById(R.id.textView3);
txvw4 = (TextView) findViewById(R.id.textView4);
txvw5 = (TextView) findViewById(R.id.textView5);
//txvw1.setText(edtx1.getText().toString());
makeJSON();
}
});
}
public JSONArray makeJSON() {
JSONArray jArr = new JSONArray();
JSONObject jObj = new JSONObject();
try {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = wifiManager.getConnectionInfo();
String macAddress = wInfo.getMacAddress();
//Long tsLong = System.currentTimeMillis()/1000;
//String ts = tsLong.toString();
jObj.put("Created_on:", currentDateTimeString);
jObj.put("Sent_by:", Build.MODEL);
jObj.put("MAC_Address:", macAddress);
jObj.put("Number_of_Hops:", 1);
jObj.put("Message:", edtx1.getText());
txvw1.setText(jObj.getString("Created_on:"));
txvw2.setText(jObj.getString("Sent_by:"));
txvw3.setText(jObj.getString("MAC_Address:"));
txvw4.setText(jObj.getString("Number_of_Hops:"));
txvw5.setText(jObj.getString("Message:"));
jArr.put(jObj);
} catch (Exception e) {
System.out.println("Error:" + e);
}
return jArr;
}
}
私はボタンを持っていて、クリックしたときに、edittextの情報をmessageというjsonオブジェクトに送ります。だから最後に私はこのような何かを持っています
{
"Created on": Date,
"Sent By": "name",
"MAC Address": "FF:FF:FF:FF:FF:FF",
"Number of Hops": "This number I will figure it out later",
"Message": "Message"
}
そして、そのファイルを他のデバイスに送ります。
UPDATE:私は上記のコードを編集し、今では一種の、少なくとも私が思うに、私が欲しいものをやっている、働いて
。ここで問題となるのは、デバイス名とMACアドレスです。私は今MACアドレスは、アプリ内で撮影することはできませんが、私はちょうどその部分を埋めることができ、静的にすることができます知っている。しかし、どうすれば私のデバイスが "Daniel"と呼ばれるデバイスの名前を取得することができますか?
内にこれを追加するには、あなたの助けトーマスいただきありがとうございます。私はJsonオブジェクトを作成し、それを同じデバイスに表示することができました(これは、ポルポイズをテストしています)。私は自分のコードを編集して、それを見て、それを改善するためにできることがあるかどうかを教えてくれます。実際には、私はjsonオブジェクトを作成しているのか、作成する前にビューにポストしているのかはまだ分かりません。 –
あなたの助けをもう一度トマスありがとう私はあなたがデバイスの名前を取得するために投稿したコードを使用し、それは働いた。今ではアプリケーションがJSONファイルを作成していますが、今ではWi-Fiの直接接続部分に行く予定です。使用しているコードやチュートリアルがあればそれを感謝します。 –