Тема: Android lib
Показать сообщение отдельно
Старый 04.08.2013, 11:36   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Android lib

Я тут погуглил и понял, что ко всему железу можно обращаться с терминала (к блюпупу тоже) через Busybox (и без него).
Что бы проверть то, как Unity умеет создавать процессы я написал скрипт:
using UnityEngine;
using System;
using System.Collections;
using System.Diagnostics;

public class 
Call MonoBehaviour
{

    
// Use this for initialization
//    private Shell shell;
    
public bool run false;
    public 
string program "";
    public 
string command "";
    public 
string ret "";
    public 
string inp "";
    public 
bool input false;
    public 
bool processing false;
    private 
Process p;
    
//private ProcessStartInfo info;
    
    
void Start ()
    { 
        
        
    }

    
    
// Update is called once per frame
    
void Update ()
    {
        if (
run) {
            if (!
processing) {
                try {
                    
ret "";
                    
= new Process ();
                    
p.StartInfo.RedirectStandardInput true;
                    
p.StartInfo.RedirectStandardOutput true;
                    
//p.StartInfo.RedirectStandardError = true;
                    
p.StartInfo.UseShellExecute false;
                    
p.StartInfo.CreateNoWindow true;
                    
p.StartInfo.FileName program;
                    
p.Start ();
                    
//p.WaitForExit();
                    
processing true;
                    
p.StandardInput.WriteLine (command);
                    
p.StandardInput.Write("\n");
                    
                } catch (
Exception e) {
                    
ret e.Message;
                }
            } else {
                if (!
p.HasExited) {
                    
                    
ret += p.StandardOutput.ReadToEnd ();// + p.StandardError.ReadToEnd();
                
} else {
                    
run false;
                    
processing false;
                }
            }
        }
    }
    
    
void OnGUI ()
    {
        
        if (
GUI.Button (new Rect (1010Screen.width 2032), "Press for run")) {
            
run true;    
        }
        
program GUI.TextArea (new Rect (1042 8Screen.width 2032), program);
        
command GUI.TextArea (new Rect (Screen.width 1042 8Screen.width 2032), command);
        
        
        
        
GUI.TextField (new Rect (1090Screen.width 20Screen.height 90), ret);
    }

(вешаем на камеру )

Имхо кастыль, но работает (Huawei ascend), может у кого нет.

UPD. SU не смог вызвать - повис.
UPD. не могу вызвать утилиты busybox, сам он вызывается, но microcom - не выдает ничего, может че с stdout.

Короче, почему-то нельзя выполнить функции с параметрами, например не могу вызвать cmd help.
делал по подобию http://stackoverflow.com/questions/6...ide-su-process

Помогите
!
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 04.08.2013 в 19:18. Причина: Подправил сорец.
(Offline)
 
Ответить с цитированием