Как запустить команды оболочки adb, такие как dumpsys, в моем приложении в Oreo? - PullRequest
0 голосов
/ 02 июля 2018

Я создаю базовое приложение для тестирования производительности, и мне нужно отобразить общее использование графического процессора устройства на нем. Команда оболочки dumpsys gfxinfo отображает информацию в Android Oreo. Проблема в том, что я не могу запустить эту команду из своего приложения.

Пожалуйста, найдите ниже мой Манифест Android здесь:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
coreApp = "true"
package="com.vis.benchmark">
<!-- android:sharedUserId="android.uid.system" -->
 <uses-permission
    android:name="android.permission.PACKAGE_USAGE_STATS"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".GFX_info"></activity>
</application>

И код Java:

public class GFX_info extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_actest);
    TextView tv = findViewById(R.id.t4);
    String[] cmd = {"dumpsys gfxinfo"};
    Process prc;
    try {
        Log.d("PINFO","step 1");
        prc = Runtime.getRuntime().exec(cmd);
        Log.d("PINFO","step 2");
        OutputStream op = prc.getOutputStream();
        BufferedReader bf = new BufferedReader(new InputStreamReader((prc.getInputStream())));
        bf.markSupported();
        String line = bf.readLine();
        tv.setText(bf.readLine());
        for(int i = 0 ;i < 5 ; i++){
            tv.append(line);
            Log.d("GFX",line);
            line = bf.readLine();
        }

    } catch (IOException e) {
        e.printStackTrace();
        Log.d("PINFO","error");
    } }

В моей консоли я получаю шаг 1, а затем ошибку, поэтому она не доходит до шага 2.

...