wifiのRSSI値を読み込むアプリを作成し、RSSI値を取得することはできました。
その値をファイルに書き込み、PC上でそのファイルを確認するプログラムを作成しました。
実行して見ると、ファイルは作成されていますが、中身が文字化けしていて表示できません。
どのようにしたら文字化けを解消できるのか、ご教授ください。よろしくお願いいたします。
開発環境は、Android Studio3.2.1 Android8.0です。
RSSI.java
package com.moonlight_aska.android.rssi; import android.Manifest; import android.content.pm.PackageManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.List; public class RSSI extends AppCompatActivity { private final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rssi); if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION); return; } verifyStoragePermissions(this); logScanResults(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION && grantResults[0] == PackageManager.PERMISSION_GRANTED) { logScanResults(); } else { // 許可されなかった場合 TextView text = findViewById(R.id.textview1); text.setText("使えません"); } } private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; public static void verifyStoragePermissions(AppCompatActivity activity) { // Check if we have read or write permission int writePermission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); int readPermission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE); if (writePermission != PackageManager.PERMISSION_GRANTED || readPermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE ); } } private void logScanResults() { WifiManager manager = (WifiManager) getSystemService(WIFI_SERVICE); List<ScanResult> results = manager.getScanResults(); String ruter1 = "W03_D065CACD736B"; String ruter2 = "shimalab1"; String[] items1 = new String[results.size()]; for (int i = 0; i < results.size(); ++i) { if (ruter2.equals(results.get(i).SSID)) { String ssid = results.get(i).SSID; int rssi = results.get(i).level; items1[i] = String.format("SSID: %s, RSSI: %d", ssid, rssi); TextView text = findViewById(R.id.textview1); text.setText(items1[i]); String path = Environment.getExternalStorageDirectory().getPath() + "/file.txt"; try { FileOutputStream out = new FileOutputStream(path); OutputStreamWriter osw = new OutputStreamWriter(out); BufferedWriter bw = new BufferedWriter(osw); bw.write(rssi); bw.flush(); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
使用したパーミッション
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/21 15:42