2012-11-08 54 views
0

你好我想2個項目 1.告訴我文按鈕Arduino的結合壓制 2.在Android撥打電話時,按鈕上的Arduino按下

什麼即時試圖做的是當有來電按下按鈕上的Arduino撥打電話.. ,但沒有運氣:(

呼叫

package net.mitchtech.adb; 

    import net.mitchtech.adb.simpledigitalinput.R; 
    import android.app.Activity; 
    import android.content.ActivityNotFoundException; 
    import android.content.Intent; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.util.Log; 

    public class phonecalls extends Activity { 

    private void call() { 
     try { 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:048598077")); 
      startActivity(callIntent); 
     } catch (ActivityNotFoundException activityException) { 
      Log.e("dialing-example", "Call failed", activityException); 
     } 
    } 

     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.input); 
     } 
    } 

按鈕

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); 
     } 
    } 
} 
+0

發生了什麼事?你的應用程序崩潰了,你是否收到編譯錯誤,或者它不工作?如果它是第一個,請發佈您的LogCat。 – Techwolf

+0

我收到一個錯誤\t \t \t \t \t \t \t \t call(); ();未定義爲輸入動作 – igor

+0

它是什麼? – Techwolf

回答

0

call()功能在您的活動中聲明,但是你要訪問它在你的ButtonView類。嘗試將其移動到ButtonView(複製&粘貼)。

+0

我複製 '代碼' 私人無效調用(){ \t嘗試{ \t callIntent =新意圖(Intent.ACTION_CALL); \t callIntent.setData(Uri.parse(「tel:048598077」)); \t startActivity(callIntent); (「撥號示例」,「呼叫失敗」,activityException); \t} ' 到ButtonView ,現在它告訴我 ‘的方法StartActivity在按鈕視圖undefinded’如果我創建一個方法是什麼在寫? 或者我應該做什麼其他事情 – igor

+0

由於在'Activity'中定義了函數'startActivity()',所以無法從'View'上下文中啓動'Activity'。修復很容易,並在這裏詳細解釋:http://stackoverflow.com/questions/3073468/starting-an-activity-from-a-view-in-android – Techwolf

+0

哇它的工作:)!謝謝我一直在這玩幾天 – igor

相關問題