MIPS arch support added to OpenCV manager;
[profile/ivi/opencv.git] / android / service / engine / src / org / opencv / engine / MarketConnector.java
1 package org.opencv.engine;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import android.app.Activity;
8 import android.content.Context;
9 import android.content.Intent;
10 import android.content.pm.ApplicationInfo;
11 import android.content.pm.PackageInfo;
12 import android.content.pm.PackageManager;
13 import android.content.pm.PackageManager.NameNotFoundException;
14 import android.net.Uri;
15 import android.util.Log;
16
17 public class MarketConnector
18 {
19         protected static final String OpenCVPackageNamePreffix = "org.opencv.lib";
20         private static final String TAG = "OpenCVEngine/MarketConnector";
21         protected Context mContext;
22
23         public boolean mIncludeManager = true;
24         
25         public MarketConnector(Context context)
26         {
27                 mContext = context;
28         }
29
30         public String GetApplicationName(ApplicationInfo info)
31         {
32                 return (String) info.loadLabel(mContext.getPackageManager());
33         }
34
35         public boolean InstallAppFromMarket(String AppID)
36         {
37         boolean result = true;
38                 try
39         {
40                 Intent intent = new Intent(
41                         Intent.ACTION_VIEW,
42                         Uri.parse("market://details?id=" + AppID)
43                         );
44                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
45                 mContext.startActivity(intent);
46         }
47         catch(Exception e)
48         {
49                 result = false;
50         }
51
52                 return result;
53         }
54
55         public boolean RemoveAppFromMarket(String AppID, boolean wait)
56         {
57         boolean result = true;
58         try
59         {
60                 Intent intent = new Intent(
61                         Intent.ACTION_DELETE,
62                         Uri.parse("package:" + AppID)
63                         );
64                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
65                 if (wait)
66                 {
67                         ((Activity)mContext).startActivityForResult(intent, 0);
68                 }
69                 else
70                 {
71                         mContext.startActivity(intent);
72                 }
73         }
74         catch(Exception e)
75         {
76                 e.printStackTrace();
77                 result = false;
78         }
79
80                 return result;
81         }
82
83         public boolean CheckPackageInstalled(String AppID)
84         {
85                 List<PackageInfo> Packages = mContext.getPackageManager().getInstalledPackages(PackageManager.GET_CONFIGURATIONS);
86                 Iterator<PackageInfo> it = Packages.iterator();
87                 while(it.hasNext())
88                 {
89                         PackageInfo CurrentPack = it.next();
90                         if (CurrentPack.packageName == AppID)
91                         {
92                                 return true;
93                         }
94                 }
95
96                 return false;
97         }
98
99         public PackageInfo[] GetInstalledOpenCVPackages()
100         {
101                 List<PackageInfo> AllPackages = mContext.getPackageManager().getInstalledPackages(PackageManager.GET_CONFIGURATIONS);
102                 List<PackageInfo> OpenCVPackages = new ArrayList<PackageInfo>();
103                 if (mIncludeManager)
104                 {
105                         try {
106                                 OpenCVPackages.add(mContext.getPackageManager().getPackageInfo("org.opencv.engine", PackageManager.GET_CONFIGURATIONS));
107                         } catch (NameNotFoundException e) {
108                                 Log.e(TAG, "OpenCV Manager package info was not found!");
109                                 e.printStackTrace();
110                         }
111                 }
112                 Iterator<PackageInfo> it = AllPackages.iterator();
113                 while(it.hasNext())
114                 {
115                         PackageInfo CurrentPack = it.next();
116                         if (CurrentPack.packageName.contains(OpenCVPackageNamePreffix))
117                         {
118                                 OpenCVPackages.add(CurrentPack);
119                         }
120                 }
121
122                 PackageInfo[] OpenCVPackagesArray = new PackageInfo[OpenCVPackages.size()];
123
124                 it = OpenCVPackages.iterator();
125                 int idx = 0;
126                 while(it.hasNext())
127                 {
128                         OpenCVPackagesArray[idx] = it.next();
129                         idx++;
130                 }
131
132                 return OpenCVPackagesArray;
133         }
134 }