Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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 按下Arduino上的按钮时拨打电话_Android_Button_Call_Arduino - Fatal编程技术网

Android 按下Arduino上的按钮时拨打电话

Android 按下Arduino上的按钮时拨打电话,android,button,call,arduino,Android,Button,Call,Arduino,嗨,我正在尝试合并两个项目 1.这告诉我arduino的按钮按下了 2.在android上打个电话 我要做的是按下arduino上的按钮打电话。。 但是没有运气:( 召唤 钮扣 package net.mitchtech.adb; import net.mitchtech.adb.simpledigitalinput.R; import net.mitchtech.adb.phonecalls; import org.microbridge.server.AbstractServerList

嗨,我正在尝试合并两个项目 1.这告诉我arduino的按钮按下了 2.在android上打个电话

我要做的是按下arduino上的按钮打电话。。 但是没有运气:(

召唤

钮扣

package net.mitchtech.adb;

import net.mitchtech.adb.simpledigitalinput.R;
import net.mitchtech.adb.phonecalls;

import org.microbridge.server.AbstractServerListener;
import org.microbridge.server.Server;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

public class ButtonView extends FrameLayout {
    private static final String TAG = ButtonView.class.getSimpleName();

    private final View mButtonView;

    private Server mServer;

    private final int BUTTON1 = 2;
    private final int BUTTON2 = 3;

    public ButtonView(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mButtonView = inflater.inflate(R.layout.input, this);
    }

    public void setServer(Server server) {
        mServer = server;

        mServer.addListener(new AbstractServerListener() {

            @Override
            public void onReceive(org.microbridge.server.Client client, byte[] data) {
                if (data.length < 2)
                    return;

                final int pinNumber = data[0];
                final int pinState = data[1];
                Log.i(TAG, "data[0]:" + pinNumber + "  data[1]:" + pinState);

                final TextView positionText = (TextView) findViewById(R.id.activeText);

                class InputAction implements Runnable {

                    public void run() {

                        switch (pinNumber) {
                        case BUTTON1:
                            if (pinState == 1) {
                                call();
                                positionText.setText("Button 1 Active");

                            } else {
                                positionText.setText("");
                            }
                            break;
                        case BUTTON2:
                            if (pinState == 1) {
                                positionText.setText("Button 2 Active");
                            } else {
                                positionText.setText("");
                            }
                            break;

                        default:
                            break;
                        }
                    }
                };

                InputAction action = new InputAction();
                post(action);
            }
        });
    }

    public View getmButtonView() {
        return mButtonView;
    }
}

您的
call()
函数已在活动中声明,但您正试图在
ButtonView
类中访问它。请尝试将其移动到
ButtonView
(复制和粘贴).

发生了什么?你的应用程序正在崩溃,你是否遇到编译错误,或者它只是不工作?如果是第一个,请发布你的日志。我在调用中遇到错误();调用()对于tipe输入操作未定义它在第一个“如果”之后的按钮->public void run()->中这里有完整的项目,这是因为您需要a/将调用放入ButtonView或b/获取您的活动上下文以访问调用函数i复制“code”私有void call(){try{callIntent=new Intent(Intent.ACTION_call);callIntent.setData(Uri.parse(“tel:048598077”);startActivity(callIntent);}catch(ActivityNotFoundException activityException){Log.e(“拨号示例”、“呼叫失败”、“activityException”);}到ButtonView,现在它告诉我“方法StartActivity在button视图中未定义”如果我创建了一个写什么的方法?或者我应该做其他事情吗?您不能从
视图
上下文启动
活动
,因为函数
startActivity()
是在
活动
中定义的。解决方法很简单,下面将详细说明:
package net.mitchtech.adb;

import net.mitchtech.adb.simpledigitalinput.R;
import net.mitchtech.adb.phonecalls;

import org.microbridge.server.AbstractServerListener;
import org.microbridge.server.Server;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

public class ButtonView extends FrameLayout {
    private static final String TAG = ButtonView.class.getSimpleName();

    private final View mButtonView;

    private Server mServer;

    private final int BUTTON1 = 2;
    private final int BUTTON2 = 3;

    public ButtonView(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mButtonView = inflater.inflate(R.layout.input, this);
    }

    public void setServer(Server server) {
        mServer = server;

        mServer.addListener(new AbstractServerListener() {

            @Override
            public void onReceive(org.microbridge.server.Client client, byte[] data) {
                if (data.length < 2)
                    return;

                final int pinNumber = data[0];
                final int pinState = data[1];
                Log.i(TAG, "data[0]:" + pinNumber + "  data[1]:" + pinState);

                final TextView positionText = (TextView) findViewById(R.id.activeText);

                class InputAction implements Runnable {

                    public void run() {

                        switch (pinNumber) {
                        case BUTTON1:
                            if (pinState == 1) {
                                call();
                                positionText.setText("Button 1 Active");

                            } else {
                                positionText.setText("");
                            }
                            break;
                        case BUTTON2:
                            if (pinState == 1) {
                                positionText.setText("Button 2 Active");
                            } else {
                                positionText.setText("");
                            }
                            break;

                        default:
                            break;
                        }
                    }
                };

                InputAction action = new InputAction();
                post(action);
            }
        });
    }

    public View getmButtonView() {
        return mButtonView;
    }
}
package net.mitchtech.adb;

import java.io.IOException;

import net.mitchtech.adb.simpledigitalinput.R;

import org.microbridge.server.Server;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class SimpleDigitalInputActivity extends Activity {

    private final static String TAG = SimpleDigitalInputActivity.class.getSimpleName();

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

        setContentView(R.layout.main);

        Server server = null;
        try
        {
            server = new Server(4567);
            server.start();

            ButtonView buttonView = (ButtonView) findViewById(R.id.inputView);
            buttonView.setServer(server);
            } catch (IOException e)
        {
            Log.e(TAG, "Unable to start TCP server", e);
            System.exit(-1);
        }
    }
}