0

Androidで合計RAMを取得したい:

       private String getTotalRAM() 
       {
         ProcessBuilder cmd;
         String result="";

         try{
          String[] args = {"/system/bin/sh", "-c", "cat -n /proc/meminfo | grep MemTotal"};
          cmd = new ProcessBuilder(args);

          Process process = cmd.start();
          InputStream in = process.getInputStream();
          byte[] re = new byte[1024];
          while(in.read(re) != -1){
            System.out.println(new String(re));
            result = result + new String(re);
          }
          in.close();
          } catch(IOException ex){
            ex.printStackTrace();
          }
         return result;
        } 

grep MemTotalがない場合、catはメモリに関するすべての情報を返します。grepで1行だけ取得したい場合、何も取得しません。どうすればこれを修正できますか?現時点で利用可能なRAMの合計を取得したいだけです。

4

2 に答える 2

3

すべての種類のリダイレクト(、、、、... |)はシェルによって処理されます。シェルを呼び出さないと、それらを使用できません。><

クリーンな解決策は、Javaコードを読み込み、文字列を手動で/proc/meminfo検索することです。MemTotalコードは現在実行しているものよりも長くはかからず、必要なリソースも大幅に少なくなります。

于 2011-04-26T10:57:58.193 に答える
2

@Joachimが示唆しているように、これはあなたにぴったりの作品だと思うでしょう。

BufferedReader pmi = new BufferedReader(new FileReader("/proc/meminfo"));
try {
  String line;
  while ((line = pmi.readLine()) != null)
    if (line.contains("MemTotal"))
       // get the second word as a long.
       return Long.parseLong(line.split(" +",3)[1]); 
  return -1;
} finally {
  pmi.close();
}
于 2011-04-26T11:08:51.783 に答える