diff --git a/android/service/engine/res/layout/info.xml b/android/service/engine/res/layout/info.xml index 2e2a24727..cd2e874a0 100644 --- a/android/service/engine/res/layout/info.xml +++ b/android/service/engine/res/layout/info.xml @@ -1,7 +1,7 @@ diff --git a/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java b/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java index bdf57adda..d31680559 100644 --- a/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java +++ b/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java @@ -47,11 +47,11 @@ public class ManagerActivity extends Activity mMarket = new MarketConnector(this); - mInstalledPacksAdapter = new SimpleAdapter( + mInstalledPacksAdapter = new PackageListAdapter( this, mListViewItems, R.layout.info, - new String[] {"Name", "Version", "Hardware"}, + new String[] {"Name", "Version", "Hardware", "Activity"}, new int[] {R.id.InfoName,R.id.InfoVersion, R.id.InfoHardware} ); @@ -158,7 +158,7 @@ public class ManagerActivity extends Activity public void onItemClick(AdapterView arg0, View arg1, int arg2, long id) { - mInstalledPackageView.setTag(new Integer((int)id)); + mInstalledPackageView.setTag(Integer.valueOf((int)id)); mActionDialog.show(); } }); @@ -188,6 +188,7 @@ public class ManagerActivity extends Activity @Override protected void onResume() { super.onResume(); + Log.d(TAG, "Filling package list on resume"); FillPackageList(); } @@ -195,15 +196,18 @@ public class ManagerActivity extends Activity protected ListView mInstalledPackageView; protected Button mUpdateEngineButton; protected PackageInfo[] mInstalledPackageInfo; - protected static final ArrayList> mListViewItems = new ArrayList>(); + protected final ArrayList> mListViewItems = new ArrayList>(); + protected static final String TAG = "OpenCV_Manager/Activity"; protected MarketConnector mMarket; - AlertDialog mActionDialog; + protected AlertDialog mActionDialog; + protected HashMap mActivePackageMap = new HashMap(); protected BroadcastReceiver mPackageChangeReciever = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.d("OpenCV Manager/Reciever", "Bradcast message " + intent.getAction() + " reciever"); + Log.d("OpenCV Manager/Reciever", "Filling package list on broadcast message"); FillPackageList(); } }; @@ -224,50 +228,83 @@ public class ManagerActivity extends Activity EngineVersionView.setText("not avaliable"); e.printStackTrace(); } + + try { + String path = EngineService.getLibPathByVersion("2.4"); + Log.d(TAG, "2.4 -> " + path); + mActivePackageMap.put("24", path); + path = EngineService.getLibPathByVersion("2.5"); + Log.d(TAG, "2.5 -> " + path); + mActivePackageMap.put("25", path); + } catch (RemoteException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Log.d(TAG, "Filling package list on service connection"); + FillPackageList(); + unbindService(mServiceConnection); } }; protected void FillPackageList() { - mInstalledPackageInfo = mMarket.GetInstalledOpenCVPackages(); - mListViewItems.clear(); - - for (int i = 0; i < mInstalledPackageInfo.length; i++) - { - // Convert to Items for package list view - HashMap temp = new HashMap(); - temp.put("Name", mMarket.GetApplicationName(mInstalledPackageInfo[i].applicationInfo)); + synchronized (mListViewItems) { + mInstalledPackageInfo = mMarket.GetInstalledOpenCVPackages(); + mListViewItems.clear(); + + for (int i = 0; i < mInstalledPackageInfo.length; i++) + { + // Convert to Items for package list view + HashMap temp = new HashMap(); + String PublicName = mMarket.GetApplicationName(mInstalledPackageInfo[i].applicationInfo); + + int idx = 0; + String OpenCVersion = "unknown"; + String HardwareName = ""; + StringTokenizer tokenizer = new StringTokenizer(mInstalledPackageInfo[i].packageName, "_"); + while (tokenizer.hasMoreTokens()) + { + if (idx == 1) + { + // version of OpenCV + OpenCVersion = tokenizer.nextToken().substring(1); + } + else if (idx >= 2) + { + // hardware options + HardwareName += tokenizer.nextToken() + " "; + } + else + { + tokenizer.nextToken(); + } + idx++; + } + + String ActivePackagePath; + ActivePackagePath = mActivePackageMap.get(OpenCVersion); + Log.d(TAG, OpenCVersion + " -> " + ActivePackagePath); + + if (null != ActivePackagePath && ActivePackagePath.indexOf(mInstalledPackageInfo[i].packageName) >= 0) + { + temp.put("Activity", "y"); + PublicName += " (Active)"; + } + else + { + temp.put("Activity", "n"); + } - int idx = 0; - String OpenCVersion = "unknown"; - String HardwareName = ""; - StringTokenizer tokenizer = new StringTokenizer(mInstalledPackageInfo[i].packageName, "_"); - while (tokenizer.hasMoreTokens()) - { - if (idx == 1) - { - // version of OpenCV - OpenCVersion = tokenizer.nextToken().substring(1); - } - else if (idx >= 2) - { - // hardware options - HardwareName += tokenizer.nextToken() + " "; - } - else - { - tokenizer.nextToken(); - } - idx++; - } - - temp.put("Version", NormalizeVersion(OpenCVersion, mInstalledPackageInfo[i].versionName)); - temp.put("Hardware", HardwareName); - mListViewItems.add(temp); - } - - mInstalledPacksAdapter.notifyDataSetChanged(); + temp.put("Name", PublicName); + temp.put("Version", NormalizeVersion(OpenCVersion, mInstalledPackageInfo[i].versionName)); + temp.put("Hardware", HardwareName); + mListViewItems.add(temp); + } + + mInstalledPacksAdapter.notifyDataSetChanged(); + } } protected String NormalizeVersion(String OpenCVersion, String PackageVersion) diff --git a/android/service/engine/src/org/opencv/engine/manager/PackageListAdapter.java b/android/service/engine/src/org/opencv/engine/manager/PackageListAdapter.java new file mode 100644 index 000000000..cbc0acad6 --- /dev/null +++ b/android/service/engine/src/org/opencv/engine/manager/PackageListAdapter.java @@ -0,0 +1,34 @@ +package org.opencv.engine.manager; + +import java.util.List; +import java.util.Map; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.SimpleAdapter; + +public class PackageListAdapter extends SimpleAdapter { + + public PackageListAdapter(Context context, + List> data, int resource, String[] from, + int[] to) { + super(context, data, resource, from, to); + // TODO Auto-generated constructor stub + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View view = super.getView(position, convertView, parent); + @SuppressWarnings("unchecked") + Map item = (Map)getItem(position); + Log.d("PackageListAdapter", item.get("Activity")); + if (item.get("Activity") != "n") + { + view.setBackgroundColor(0x50ffffff); + } + + return view; + } +}