Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序自动进入Minix Neo X7的后台_Android_Fullscreen_Minix - Fatal编程技术网

Android应用程序自动进入Minix Neo X7的后台

Android应用程序自动进入Minix Neo X7的后台,android,fullscreen,minix,Android,Fullscreen,Minix,我制作了一个应用程序,其目标是显示每秒通过HTTP GET从服务器获取的一些信息。它全屏运行并保持清醒。某种信息板。它在手机和平板电脑上运行良好,但我需要它在Minix Neo X7/8上运行。在Minix上,它只是在几分钟后自动进入后台,在系统杀死它后在后台工作一段时间 如何让它在Minix上工作?我不知道为什么会发生这种魔法 ---更新---这是应用程序的完整来源 public class MainActivity extends Activity { private final S

我制作了一个应用程序,其目标是显示每秒通过HTTP GET从服务器获取的一些信息。它全屏运行并保持清醒。某种信息板。它在手机和平板电脑上运行良好,但我需要它在Minix Neo X7/8上运行。在Minix上,它只是在几分钟后自动进入后台,在系统杀死它后在后台工作一段时间

如何让它在Minix上工作?我不知道为什么会发生这种魔法

---更新---这是应用程序的完整来源

public class MainActivity extends Activity
{
    private final String URL = "http://192.168.1.5:8080";
    private final String SOUND_FILE_NAME = "file:///mnt/usb_storage/USB_DISK0/udisk0/events/sound.mp3";

    //--------------------------------------------------------------------
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        createScene();
        startPolling();
    }

    //--------------------------------------------------------------------
    private void createScene()
    {

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        setContentView(R.layout.main);

        WebView view = (WebView) findViewById(R.id.MainWebView);
        view.setWebChromeClient(new WebChromeClient());
        view.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode,
                                        String description,
                                        String failingUrl)
            {
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        WebView view = (WebView) findViewById(R.id.MainWebView);
                        view.loadUrl(URL);
                    }
                }, 5000);
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
        });
        view.clearCache(true);
        view.clearHistory();
        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        view.loadUrl(URL);
    }

    //--------------------------------------------------------------------
    private void startPolling()
    {
        _http_client = new DefaultHttpClient();

        _timer = new Timer();
        _timer.schedule(new TimerTask() {
            @Override
            public void run() {
                try {
                    HttpResponse response = _http_client.execute(new HttpGet(URL + "/info"));
                    StatusLine statusLine = response.getStatusLine();
                    if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                        ByteArrayOutputStream out = new ByteArrayOutputStream();
                        response.getEntity().writeTo(out);
                        String payload = out.toString();
                        out.close();

                        Log.d("GK", "got payload " + payload);
                        String data = "{\"data\":" + payload + "}";
                        Log.d("GK", "parsing " + data);

                        JSONObject json = new JSONObject(data);
                        JSONArray info = json.getJSONArray("data");

                        final int maxInfo = 3;
                        if (info.length() > maxInfo) {
                            File f = new File(Uri.parse(SOUND_FILE_NAME).getPath());
                            if (f.exists() && !f.isDirectory()) {
                                startAudio(SOUND_FILE_NAME);
                            }
                        } else {
                            stopAudio();
                        }
                    } else {
                        stopAudio();
                        //Closes the connection.
                        response.getEntity().getContent().close();
                    }
                } catch (Exception e) {
                    stopAudio();
                }
            }
        }, 0, 1000);
    }

    //--------------------------------------------------------------------
    private Boolean isPlaying() { return _player != null && _player.isPlaying(); }

    //--------------------------------------------------------------------
    private void startAudio(String audioUri)
    {
        if (!isPlaying())
        {
            _player = MediaPlayer.create(this, Uri.parse(audioUri));
            _player.setOnCompletionListener(new musicCompletionListener());
            _player.start();
        }
    }

    //--------------------------------------------------------------------
    private void stopAudio()
    {
        if (isPlaying()) { _player.stop(); }
    }

    //////////////////////////////////////////////////////////////////////
    // classes
    //--------------------------------------------------------------------
    private class musicCompletionListener implements MediaPlayer.OnCompletionListener
    {
        public void onCompletion(MediaPlayer player)
        {
            if (_player != null)
            {
                _player.release();
                _player = null;
            }
        }
    }

    private MediaPlayer _player;
    private HttpClient _http_client;
    private Timer _timer;
}

提前终止。

终止之前是否有任何设备日志?有退出代码吗?没什么,它只是转到后台并从后台继续工作(.I发现如果我对startPolling()调用进行注释(禁用http轮询),它可以正常工作。正如我所说,它只发生在Minix上,在其他设备上一切正常…如果将轮询间隔从1秒更改为5秒,它也可以工作。在kill之前是否有任何设备日志?是否有退出代码?没有,它只会转到后台并从后台继续工作(.I发现如果我对startPolling()调用进行注释(禁用http轮询),它可以正常工作。正如我所说,它只在Minix上发生,在其他设备上一切正常…如果将轮询间隔从1秒更改为5秒,它也可以工作。