5339


private void start() の部分で、「The method start() from the type MainActivity is
never used locally」という警告が出ています。どう修正すべきかご教示いただけないでしょうか。

[code]

    package com.jp.hoge;
    
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Timer;
    import java.util.TimerTask;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    // マニフェストに <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> を追加すること。
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ListView;
    
    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        private Timer timer;
    
        private void start() {
            // タイマーの初期化
            if (timer == null) {
                timer = new Timer();
                timer.schedule(new TimerTask() {
                    // タイマーの実行回数
                    private int i;
    
                    // 信号強度の合計
                    private double sum;
    
                    // 信号強度の取得部分。
                    private double getStrength() {
                        WifiManager wifi = (WifiManager)getSystemService(WIFI_SERVICE);
                        WifiInfo info = wifi.getConnectionInfo();
                        String[] apInfo = new String[4];
                        int rssi = info .getRssi();
                        int level = WifiManager.calculateSignalLevel(rssi, 5);
                        apInfo[3] = String.format("RSSI : %d / Level : %d/4", rssi, level);
                        return rssi;
                    }
    
                    // タイマー実行時に呼び出される。
                    // 1秒間隔で信号強度を取得し、10回に1回送信を行う
                    @Override
                    public void run() {
                        try {
                            // 実行回数が5, 15, 25, 35…であれば送信
                            if (++i % 10 == 5) {
                                // URLの生成部分。http://192.168.0.2/index.php?RSSI=80 といった具合に、RSSIを引数で渡す。
                                URL url = new URL(
                                        "http://192.168.0.2/index.php?RSSI=" + Math.round(sum / 5));
                                HttpURLConnection cn = (HttpURLConnection) url.openConnection();
    
                                // 送信
                                cn.getResponseCode();
    
                                // 切断
                                cn.disconnect();
                            }
    
                            // 実行回数が5の倍数であれば強度の和をリセット
                            if (i % 5 == 0) {
                                sum = 0;
                            }
    
                            // 現在の強度を加算
                            sum += getStrength();
                        } catch (Exception e) {
                            // TODO エラー処理
                        }
                    }
                }, 0, 1000); // 上のrunを0ミリ秒後から1000ミリ秒間隔で実行する
            }
        }
    
        private void stop() {
            // タイマーの停止
            if (timer != null) {
                timer.cancel();
                timer = null;
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-01-26T12:45:41.200
5338
2015-01-26T16:31:25.770
2015-01-26T16:31:25.770
7290
7590
question
android java
警告の解決方法が知りたい。「The method start() from the type MainActivity is never used locally」


`private`で宣言したメソッドはそのクラス内からしか呼べませんが、このコードでは誰も呼び出していないため「使われていないメソッドがあります」という警告を出しているのです。

解決するには

  * 単に`start()`メソッドを呼び出す処理を書く
  * メソッドのスコープを広げる（`protected`や`public`にすれば使われる可能性が出るため警告が消えます）
  * `@SuppressWarnings("unused")`アノテーションで警告を抑制する（デバッグ用途のメソッドや、リフレクションで動的に呼び出すコードに警告が出ないようにできます）

などの方法があります。


CC BY-SA 3.0
2015-01-26T12:59:06.193
5339
2015-01-26T13:06:03.293
2015-01-26T13:06:03.293
5337
5337
5338
answer