I made code to read cpu temperature in android. But there is an error like this
java.io.FileNotFoundException: /sys/devices/virtual/thermal/thermal_zone0/temp: open failed: EACCES (Permission denied)
private double getCurrentCPUTemperature() throws IOException, InterruptedException { ArrayList <Float> suhu = new ArrayList<>(); Process process; String line; BufferedReader reader; RandomAccessFile reader1; for (int i = 0; i <= 30 ; i ++ ) { process = Runtime.getRuntime().exec("cat /sys/devices/virtual/thermal/thermal_zone" + i + "/temp"); process.waitFor(); reader = new BufferedReader(new InputStreamReader(process.getInputStream())); line = reader.readLine(); System.out.println("Line = " + line); if(line != null){ Float temp = Float.parseFloat(line); suhu.add(temp); } if(line == null){ reader1 = new RandomAccessFile("/sys/devices/virtual/thermal/thermal_zone" + i +"/temp", "r"); line = reader.readLine(); if (line != null){ System.out.println(line + " RAM"); Float temp1 = Float.parseFloat(line); suhu.add(temp1); } } if (i == 30){ reader.close(); process.destroy(); } } double temp = 0.0; for (int i = 0; i < suhu.size() ; i++){ if (suhu.get(i) > temp){ temp = (double) suhu.get(i); } } System.out.println(suhu); return temp; } i have make request permission for read and write external storage. Manifest :
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.gpc1"> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" And in activity
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sensor); BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation); bottomNavigationView.setSelectedItemId(R.id.page_2); bottomNavigationView.setOnNavigationItemSelectedListener(this); requestPermissionStorage(); @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode == STORAGE_PERMISSION_CODE){ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { requestPermissionStorage(); } else { Toast.makeText(this, "Permission DENIED", Toast.LENGTH_SHORT).show(); } } } private void requestPermissionStorage() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { System.out.println("Request External Storage"); } } Thanks and i appreciate your help