1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.xwalk.core.internal.extension.api.device_capabilities;
7 import android.app.ActivityManager;
8 import android.app.ActivityManager.MemoryInfo;
9 import android.content.Context;
10 import android.util.Log;
11 import android.os.Build;
13 import java.io.RandomAccessFile;
14 import java.io.IOException;
16 import org.json.JSONException;
17 import org.json.JSONObject;
19 class DeviceCapabilitiesMemory {
20 private static final String MEM_INFO_FILE = "/proc/meminfo";
21 private static final String TAG = "DeviceCapabilitiesMemory";
23 private DeviceCapabilities mDeviceCapabilities;
24 private Context mContext;
26 private long mAvailableCapacity = 0;
27 private long mCapacity = 0;
29 public DeviceCapabilitiesMemory(DeviceCapabilities instance,
31 mDeviceCapabilities = instance;
35 public JSONObject getInfo() {
38 JSONObject out = new JSONObject();
40 out.put("capacity", mCapacity);
41 out.put("availCapacity", mAvailableCapacity);
42 } catch (JSONException e) {
43 return mDeviceCapabilities.setErrorMessage(e.toString());
49 private void readMemoryInfo() {
50 MemoryInfo mem_info = new MemoryInfo();
51 ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
52 activityManager.getMemoryInfo(mem_info);
54 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
55 mCapacity = mem_info.totalMem;
57 mCapacity = getTotalMemFromFile();
59 mAvailableCapacity = mem_info.availMem;
62 private long getTotalMemFromFile() {
64 RandomAccessFile file = null;
67 file = new RandomAccessFile(MEM_INFO_FILE, "r");
68 String line = file.readLine();
70 String[] arrs = line.split(":");
71 if (!arrs[0].equals("MemTotal")) {
74 String[] values = arrs[1].trim().split("\\s+");
75 capacity = Long.parseLong(values[0]) * 1024;
76 } catch (IOException e) {
78 Log.e(TAG, e.toString());
84 } catch (IOException e) {
85 Log.e(TAG, e.toString());