【问题标题】:android wear message api start activity and methodsandroid wear message api 启动活动和方法
【发布时间】:2015-03-06 23:52:39
【问题描述】:

我的 android wear 设备有问题,我可以通过在移动设备上加载 turnOn() onCreate 来使用消息 api 打开相机。

问题一:如果手机被锁定,我无法打开活动。 问题二:手机解锁时只能启动一项活动,但不能调用手机的方法。我启动相机的唯一方法是使用 wearListener 服务在 Oncreate() 方法上启动 MainActivity。

我想要这样的应用程序:https://play.google.com/store/apps/details?id=com.jumpbyte.flashlight

这是我的代码: Oncreate 方法电话

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent() ;
        int valor = intent.getIntExtra("parameter",0);
        String value = "key" ;
        if (valor == 0){
            boolean isCameraFlash = getApplicationContext().getPackageManager()
                    .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
            if(!isCameraFlash) {
                showCameraAlert();
            } else {
                camera = Camera.open();
                params = camera.getParameters();
            }
            if(isFlashlightOn) {
                setFlashlightOff();
            } else {
                setFlashlightOn();
            }
        }
        else{
            finish();
        }
        /* boolean isCameraFlash = getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
        if(!isCameraFlash) {
            showCameraAlert();
        } else {
            camera = Camera.open();
            params = camera.getParameters();
        }

        if(isFlashlightOn) {
            setFlashlightOff();
        } else {
            setFlashlightOn();
        }

*/
    }

监听电话:

private static final String HELLO_WORLD_WEAR_PATH = "/hello-world-wear" ;
    public void onMessageReceived(MessageEvent messageEvent) {
        if (messageEvent.getPath().equals(HELLO_WORLD_WEAR_PATH)) {
            // AudioManager audiomanager ;
            // audiomanager = (AudioManager)getSystemService(Context.AUDIO_SERVICE) ;
            // audiomanager = (AudioManager)getSystemService(Context.AUDIO_SERVICE) ;
            // audiomanager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI) ;
            // Toast.makeText(getApplicationContext(), "Volume Up | Vibration Time Increased", Toast.LENGTH_SHORT).show() ;
            //light lightOne = new light();
            // MainActivity one = new MainActivity() ;
            // one.messageone();
            // lightOne.on();
            // Toast.makeText(getApplicationContext(),
            //        "Button is clicked", Toast.LENGTH_LONG).show() ;
            Intent startIntent = new Intent(this, MainActivity.class) ;
            startIntent.putExtra("parameter", 0); //Optional parameters
            startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) ;
            startActivity(startIntent) ;
            /* if(isFlashlightOn) {
                setFlashlightOff();
            } else {
                setFlashlightOn();
            }
            */
        } else {

        } } }

穿主类:

private void sendMessage() {
        if (mNode != null && mGoogleApiClient!=null && mGoogleApiClient.isConnected()) {
            Wearable.MessageApi.sendMessage(
                    mGoogleApiClient, mNode.getId(), HELLO_WORLD_WEAR_PATH, null).setResultCallback(

                    new ResultCallback<MessageApi.SendMessageResult>() {
                        @Override
                        public void onResult(MessageApi.SendMessageResult sendMessageResult) {

                            if (!sendMessageResult.getStatus().isSuccess()) {
                                Log.e("TAG", "Failed to send message with status code: "
                                        + sendMessageResult.getStatus().getStatusCode());
                            }
                        }
                    }
            );
        }else{        } }
    protected void onStart() {
        super.onStart() ;
        if (!mResolvingError) {
            mGoogleApiClient.connect() ;
        } }
    private void resolveNode() {
        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
            @Override
            public void onResult(NodeApi.GetConnectedNodesResult nodes) {
                for (Node node : nodes.getNodes()) {
                    mNode = node ; }     }
        }) ; }
    public void onConnected(Bundle bundle) {
        resolveNode();
    }
    public void onConnectionSuspended(int i) {
        //Improve your code
    }
    public void onConnectionFailed(ConnectionResult connectionResult) {
        //Improve your code
    }

有人可以帮我解决这个问题吗?我找不到任何方法来解决这两个问题。我想要这样的应用程序:https://play.google.com/store/apps/details?id=com.jumpbyte.flashlight

【问题讨论】:

    标签: java android android-intent wear-os android-wear-data-api


    【解决方案1】:

    我自己有点菜鸟,但我遇到了类似的问题,所以我会尝试就我目前所学的内容提供一些意见。

    我认为任何代码都不需要在 onCreate() 中,因为它只会在应用首次打开时运行一次。

    首先,我将把你在onCreate() 中编写的所有代码,在onCreate() 之外编写一个单独的方法。 Intent、valor 和 value 等常量应该是私有的并且在普通的Main Activity 内。

    在制作了一个新方法和一些复制意大利面之后,我会在onMessageReceived() 中运行它。

    这里是MessageAPIDemo 的链接。非常有帮助。

    当应用程序未在手机上打开时,我个人无法让手机接收消息,这有点类似于您的手机锁定问题。我希望我能有所帮助。

    【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多