1 package com.android.DeviceAsWebcam.utils; 2 3 import android.content.Context; 4 import android.util.JsonReader; 5 import android.util.Log; 6 7 import com.android.DeviceAsWebcam.R; 8 9 import java.io.IOException; 10 import java.io.InputStream; 11 import java.io.InputStreamReader; 12 import java.util.ArrayList; 13 import java.util.List; 14 15 public class IgnoredV4L2Nodes { 16 private static final String TAG = IgnoredV4L2Nodes.class.getSimpleName(); 17 private static final String V4L2_NODE_PREFIX = "/dev/video"; 18 19 private static String[] kIgnoredNodes = null; 20 getIgnoredNodes(Context context)21 public synchronized static String[] getIgnoredNodes(Context context) { 22 if (kIgnoredNodes != null) { 23 return kIgnoredNodes; 24 } 25 26 List<String> ignoredNodes = new ArrayList<>(); 27 try(InputStream in = context.getResources().openRawResource(R.raw.ignored_v4l2_nodes); 28 JsonReader jsonReader = new JsonReader(new InputStreamReader(in))) { 29 jsonReader.beginArray(); 30 while (jsonReader.hasNext()) { 31 String node = jsonReader.nextString(); 32 // Don't track nodes that won't be in our search anyway. 33 if (node.startsWith(V4L2_NODE_PREFIX)) { 34 ignoredNodes.add(node); 35 } 36 } 37 jsonReader.endArray(); 38 } catch (IOException e) { 39 Log.e(TAG, "Failed to parse JSON. Running with a partial ignored list", e); 40 } 41 42 kIgnoredNodes = ignoredNodes.toArray(new String[0]); 43 return kIgnoredNodes; 44 } 45 } 46