0

Android Wear デバイスに問題があります。モバイル デバイスで turnOn() onCreate をロードすることにより、メッセージ API でカメラをオンにできます。

問題 1: 電話がロックされていると、アクティビティを開くことができません。問題 2: 電話のロックが解除されているが、電話のメソッドを呼び出すことができない場合、1 つのアクティビティしか開始できません。カメラを起動する唯一の方法は、wearListener サービスを使用して Oncreate() メソッドで MainActivity を起動することでした。

このアプリのようなものが欲しい: https://play.google.com/store/apps/details?id=com.jumpbyte.flashlight

ここに私のコードがあります: Oncreate method phone

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
    }

この 2 つの問題を解決する方法が見つかりません。このアプリのようなものが欲しい: https://play.google.com/store/apps/details?id=com.jumpbyte.flashlight

4

1 に答える 1

0

私はやや初心者ですが、同様の問題を抱えているので、これまでに学んだことについて意見を述べようと思います。

onCreate()アプリが最初に開かれたときに一度だけ実行されるため、そのコードを に含める必要はないと思います。

まず、あなたが書いたすべてのコードを の中に取り、別のonCreate()メソッドを の外側に書きonCreate()ます。Intent、valor、および value などの定数は、通常の内部の private である必要がありますMain Activity

新しいメソッドといくつかのコピーパスタを作成した後、私はそれを の中で実行しますonMessageReceived()

ここにMessageAPIDemoへのリンクがあります。非常に役立ちます。

私は個人的に、アプリが電話で開かれていないときに電話でメッセージを受信するのに問題があります。これは、ロックされた電話の問題と似ています。少しでもお役に立てば幸いです。

于 2015-06-24T07:22:56.480 に答える