コード例 #1
0
ファイル: CmdFunc.cs プロジェクト: ouyanghy/android-tool
 public CmdFunc(Cmd cmd, CmdsThread thread, CmdOption opt, MProgressBar bar)
 {
     mOption = opt;
     mThread = thread;
     mCmd    = cmd;
     mBar    = bar;
 }
コード例 #2
0
ファイル: CmdsThread.cs プロジェクト: ouyanghy/android-tool
        public void startCmdUpdateThread(CmdOption option, MProgressBar bar)
        {
            mProgress = bar;
            Thread update = new Thread(new ParameterizedThreadStart(updateSystem));

            update.Start(option);
        }
コード例 #3
0
        private CmdOption parseToOption(String s)
        {
            string[] ar = s.Split(',');
            string   sp = "->";

            String type       = getValue(ar[0], Enums.Key.TYPE, sp);
            String name       = getValue(ar[1], Enums.Key.NAME, sp);
            String src        = getValue(ar[2], Enums.Key.SRC, sp);
            String dst        = getValue(ar[3], Enums.Key.DST, sp);
            String permission = getValue(ar[4], Enums.Key.PERMISSION, sp);
            String index      = getValue(ar[5], Enums.Key.INDEX, sp);

            Console.WriteLine("name:" + name + "src:" + src);
            int id = int.Parse(index);

            bool      exist = mTable.ContainsKey(name);
            CmdOption option;

            if (!exist)
            {
                option = new CmdOption(id);
            }
            else
            {
                option = (CmdOption)mTable[name];
            }

            option.type               = int.Parse(type);
            option.name               = name;
            option.path[id - 1]       = src;
            option.dst[id - 1]        = dst;
            option.permission[id - 1] = permission;

            return(option);
        }
コード例 #4
0
        private void loadUi()
        {
            String bmp = Enums.PNG.APK;

            foreach (DictionaryEntry entry in mTable)
            {
                CmdOption option = (CmdOption)entry.Value;
                addControl(option);
            }
        }
コード例 #5
0
ファイル: CmdsThread.cs プロジェクト: ouyanghy/android-tool
        public void startCmdUpdateThread(String[] path, String[] to, int length, String[] permission, MProgressBar bar)
        {
            mProgress = bar;
            CmdOption option = new CmdOption(length);

            option.path       = path;
            option.permission = permission;
            option.dst        = to;

            Thread update = new Thread(new ParameterizedThreadStart(updateSystem));

            update.Start(option);
        }
コード例 #6
0
        /*
         * type:0/1/2
         * name:
         * src:
         * dst:
         * permission:
         * index:
         */
        private bool initLoadSource()
        {
            FileInfo info = new FileInfo(Enums.Path.COMPONET);

            if (info.Exists == false)
            {
                return(false);
            }

            FileStream   stream = info.OpenRead();
            StreamReader reader = new StreamReader(stream);
            String       s;
            bool         ret;

            s = reader.ReadLine();
            while (s != null)
            {
                Console.WriteLine("read:" + s);
                ret = mParse.existString(s, "type->");

                if (ret == false)
                {
                    Console.WriteLine("invalid line info,read next");
                    s = reader.ReadLine();
                    continue;
                }

                ret = mParse.existString(s, "#");
                if (ret == true)
                {
                    //just comment
                    s = reader.ReadLine();
                    continue;
                }
                CmdOption option = parseToOption(s);
                if (mTable.ContainsKey(option.name))
                {
                    mTable.Remove(option.name);
                }

                mTable.Add(option.name, option);


                s = reader.ReadLine();
            }

            reader.Close();
            stream.Close();
            return(true);
        }
コード例 #7
0
        private void buttonExCamera_Click(object sender, EventArgs e)
        {
            bool adbState = mCmd.excuteCmdGetAdbState();

            if (!adbState)
            {
                MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR);
                return;
            }
            CmdOption option = new CmdOption(1);

            option.path[0]       = PATH_NET + Enums.AndroidPath.SYSTEM_LIB + Enums.UpdateFileName.CAMERA_SERVICE;
            option.dst[0]        = Enums.AndroidPath.SYSTEM_LIB + Enums.UpdateFileName.CAMERA_SERVICE;
            option.permission[0] = Enums.LinuxPermission.NO_CHANGE;
            mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate);
        }
コード例 #8
0
ファイル: CmdsThread.cs プロジェクト: ouyanghy/android-tool
        private void installApk(Object obj)
        {
            CmdOption option = new CmdOption(1);

            bool ret = false;

            option.state[0] = Enums.WorkState.RUNNING;
            option.path[0]  = (String)obj;
            option.calcSize();

            mProgress.showProgress(option);
            ret             = mCmd.excuteCmdInstallThirdApp(option.path[0]);
            option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
            mIntfResult.setResult(Enums.CmdType.APK, ret);
            Thread.Sleep(1000);
            mProgress.dismissProgress(0);
        }
コード例 #9
0
        private void buttonExBusybox_Click(object sender, EventArgs e)
        {
            bool adbState = mCmd.excuteCmdGetAdbState();

            if (!adbState)
            {
                MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR);
                return;
            }

            CmdOption option = new CmdOption(1);

            option.path[0]       = Enums.Path.PATH_SRC + Enums.ThirdAppFileName.BUSYBOX;
            option.dst[0]        = Enums.AndroidPath.SYSTEM_BIN + Enums.ThirdAppFileName.BUSYBOX;
            option.permission[0] = Enums.LinuxPermission.RWX_RWX_RWX;
            mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate);
        }
コード例 #10
0
        private void addControl(CmdOption option)
        {
            ButtonEx button = new ButtonEx();

            button.setText(option.name);
            CmdFunc func = new CmdFunc(mCmd, mCmdThread, option, mBar);

            button.setButtonClick(func);
            if (option.type == Enums.CmdType.APK)
            {
                button.setBitmap(Enums.PNG.APK);
                mLayoutApp.Controls.Add(button);
            }
            else if (option.type == Enums.CmdType.UPDATE)
            {
                mLayoutFrameware.Controls.Add(button);
                button.setBitmap(Enums.PNG.FRAMEWORK);
            }
        }
コード例 #11
0
        private void buttonExLancher_Click(object sender, EventArgs e)
        {
            bool adbState = mCmd.excuteCmdGetAdbState();

            if (!adbState)
            {
                MessageBox.Show(Enums.Error.ADB, Enums.Title.ERROR);
                return;
            }
            CmdOption option = new CmdOption(2);

            option.path[0]       = PATH_NET + Enums.AndroidPath.SYSTEM_PRIV_APP + Enums.UpdateFileName.LANCHER2_APK;
            option.dst[0]        = Enums.AndroidPath.SYSTEM_PRIV_APP + Enums.UpdateFileName.LANCHER2_APK;
            option.permission[0] = Enums.LinuxPermission.NO_CHANGE;
            option.path[1]       = PATH_NET + Enums.AndroidPath.SYSTEM_APP + Enums.UpdateFileName.LANCHER2_ODEX;
            option.dst[1]        = Enums.AndroidPath.SYSTEM_APP + Enums.UpdateFileName.LANCHER2_ODEX;
            option.permission[1] = Enums.LinuxPermission.NO_CHANGE;

            mThreadCmd.startCmdUpdateThread(option, mProgressBarUpdate);
        }
コード例 #12
0
ファイル: CmdsThread.cs プロジェクト: ouyanghy/android-tool
        private void updateSystem(Object obj)
        {
            CmdOption option = (CmdOption)obj;
            bool      ret    = true;

            option.calcSize();
            if (mProgress != null)
            {
                mProgress.showProgress(option);
            }
            for (int i = 0; i < option.length; i++)
            {
                ret            &= mCmd.excuteCmdUpdate(option.path[i], option.dst[i], option.permission[i]);
                option.state[i] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
            }

            mIntfResult.setResult(Enums.CmdType.UPDATE, ret);
            Thread.Sleep(1000);
            if (mProgress != null)
            {
                mProgress.dismissProgress(0);
            }
        }
コード例 #13
0
 public void addComponet(CmdOption option)
 {
     addComponet(option);
 }
コード例 #14
0
        //show progress
        private void showProgressThread(Object obj)
        {
            mProgressEx.runCycle();
            CmdOption option = (CmdOption)obj;

            long size         = 0;
            int  percent      = 0;
            int  totalPercent = 0;
            long totalValue   = 0;
            long value        = 0;
            int  state        = Enums.WorkState.RUNNING;

            for (int i = 0; i < option.length; i++)
            {
                size    = option.size[i];
                value   = 0;
                percent = 0;

                if (size <= 0)
                {
                    continue;
                }
                state = Enums.WorkState.RUNNING;
                while (value < size || state == Enums.WorkState.RUNNING)
                {
                    percent = (int)(((float)value / (float)(size)) * 100);
                    percent = (percent > 100) ? 100 : percent;

                    if (state == Enums.WorkState.SUCC)
                    {
                        value   = size;
                        percent = 100;
                        break;
                    }
                    else if (state == Enums.WorkState.ERROR)
                    {
                        value   = size;
                        percent = 100;
                        break;
                    }
                    else
                    {
                        percent = (percent >= 100) ? 99 : percent;

                        if (percent < 99)
                        {
                            totalPercent = (int)(((float)totalValue / (float)option.sizeTotal) * 100);
                            totalPercent = totalPercent >= 99 ? 99 : totalPercent;
                            Console.WriteLine("toatlval:" + totalValue + " size:" + option.sizeTotal + " pecent:" + totalPercent);
                            mSyn.Post(__showProgressTotal, totalPercent);
                            value      += STEP;
                            totalValue += STEP;
                        }

                        else
                        {
                            value = size - 1;
                        }
                    }
                    //   Console.WriteLine("cur percent:" + percent + " size:" + size);
                    mSyn.Post(__showProgressCur, percent);

                    Thread.Sleep(100);
                    state = option.state[i];
                }
                mSyn.Post(__showProgressCur, 100);
                //    Console.WriteLine("size:" + option.size[i] + " total:" + option.sizeTotal);
            }
            mSyn.Post(__showProgressTotal, 100);
            mProgressEx.stopCycle();
        }
コード例 #15
0
 public void showProgress(CmdOption option)
 {
     mThreadShowProgress = new Thread(new ParameterizedThreadStart(showProgressThread));
     mThreadShowProgress.Start(option);
 }
コード例 #16
0
        private CmdOption getPartitonOption(int index)
        {
            PATH_IMG = textBoxImgRoute.Text;
            CmdOption option = new CmdOption(1);

            option.index = index;
            switch (index)
            {
            case (Enums.PartitionIndex.ABOOT):
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.ABOOT;
                option.calcSize();

                break;

            case Enums.PartitionIndex.BOOT:
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.BOOT;
                option.calcSize();
                break;

            case Enums.PartitionIndex.SYSTEM:
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.SYSTEM;
                option.calcSize();
                break;

            case Enums.PartitionIndex.MODEM:
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.MODEM;
                option.calcSize();
                break;

            case (Enums.PartitionIndex.SPLASH):
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.SPLASH;
                option.calcSize();
                break;

            case (Enums.PartitionIndex.USERDATA):
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.USERDATA;
                option.calcSize();
                break;

            case (Enums.PartitionIndex.RECOVERY):
                option.state[0] = Enums.WorkState.RUNNING;
                option.path[0]  = PATH_IMG + @"\" + Enums.PartitionFileName.RECOVERY;
                option.calcSize();
                break;

            case (Enums.PartitionIndex.ALL):
                option         = new CmdOption(7);
                option.index   = Enums.PartitionIndex.ALL;
                option.path[0] = PATH_IMG + @"\" + Enums.PartitionFileName.ABOOT;
                option.path[1] = PATH_IMG + @"\" + Enums.PartitionFileName.BOOT;
                option.path[2] = PATH_IMG + @"\" + Enums.PartitionFileName.SYSTEM;
                option.path[3] = PATH_IMG + @"\" + Enums.PartitionFileName.MODEM;
                option.path[4] = PATH_IMG + @"\" + Enums.PartitionFileName.SPLASH;
                option.path[5] = PATH_IMG + @"\" + Enums.PartitionFileName.USERDATA;
                option.path[6] = PATH_IMG + @"\" + Enums.PartitionFileName.RECOVERY;

                option.state[0] = Enums.WorkState.RUNNING;
                option.state[1] = Enums.WorkState.RUNNING;
                option.state[2] = Enums.WorkState.RUNNING;
                option.state[3] = Enums.WorkState.RUNNING;
                option.state[4] = Enums.WorkState.RUNNING;
                option.state[5] = Enums.WorkState.RUNNING;
                option.state[6] = Enums.WorkState.RUNNING;
                option.calcSize();
                break;
            }
            return(option);
        }
コード例 #17
0
ファイル: CmdsThread.cs プロジェクト: ouyanghy/android-tool
        private void flashThread(Object obj)
        {
            CmdOption option = (CmdOption)obj;

            int  index = option.index;
            bool ret   = false;

            switch (index)
            {
            case (Enums.PartitionIndex.ABOOT):
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashAboot(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case Enums.PartitionIndex.BOOT:
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashBoot(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case Enums.PartitionIndex.SYSTEM:
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashSystem(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case Enums.PartitionIndex.MODEM:
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashModem(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case (Enums.PartitionIndex.SPLASH):
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashSplash(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case (Enums.PartitionIndex.USERDATA):
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashUserdata(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case (Enums.PartitionIndex.RECOVERY):
                mProgress.showProgress(option);
                ret             = mCmd.excuteCmdFlashRecovery(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;

            case (Enums.PartitionIndex.ALL):
                ret = true;
                mProgress.showProgress(option);
                ret            &= mCmd.excuteCmdFlashAboot(option.path[0]);
                option.state[0] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashBoot(option.path[1]);
                option.state[1] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashSystem(option.path[2]);
                option.state[2] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashModem(option.path[3]);
                option.state[3] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashSplash(option.path[4]);
                option.state[4] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashUserdata(option.path[5]);
                option.state[5] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;

                ret            &= mCmd.excuteCmdFlashRecovery(option.path[6]);
                option.state[6] = ret == true ? (int)Enums.WorkState.SUCC : (int)Enums.WorkState.ERROR;
                break;
            }

            mIntfResult.setResult(Enums.CmdType.FASTBOOT, ret);
            Thread.Sleep(1000);
            mProgress.dismissProgress(0);
        }