Задать вопрос
  • Почему не устанавливается DAHDI?

    @Afdenis Автор вопроса
    Проблему решил. Вдруг кому понадобится.
    При установке необходимо прямо указать путь до исходников ядра:
    # make KSRC=/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64
    # make install-config KSRC=/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64

    В таком виде DAHDI корректно устанавливается.
    Ответ написан
    Комментировать
  • Как передать свой параметр при множественном геокодировнии Яндекс?

    @Afdenis Автор вопроса
    Проблема решилась следующим способом:
    Нужно заменить for (var i = 0 на for (let i = 0. Дело в асинхронности.
    Ответ написан
    Комментировать
  • Как из интернета получить доступ к оборудованию находящемуся внутри VPN сети?

    @Afdenis Автор вопроса
    Попробовал еще сначала с VPN сервера пробросить порт на 172.25.6.31, а затем на VPN клиенте уже пробросил с PPPTP подключения до 192.168.2.100. Результата это не дало, доступ к не появился.
    Ответ написан
    Комментировать
  • Как организовать Bluetooth подключение к двум платам с HC-06?

    @Afdenis Автор вопроса
    Вопрос снят, решение найдено, немного изменил найденный в сети пример, где было реализовано единичное подключение:
    package ru.bltmulti;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.UUID;
    
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.bluetooth.BluetoothSocket;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
      private static final String TAG = "bluetooth2";
       
      Button btn1On, btn1Off, btn1Reset, btn2On, btn2Off, btn2Reset;
      TextView txtArduino;
      Handler h;
       
      private static final int REQUEST_ENABLE_BT = 1;
      final int RECIEVE_MESSAGE = 1;		// Статус для Handler
      private BluetoothAdapter btAdapter = null;
      private BluetoothSocket btSocket = null;
      private BluetoothSocket btSocket2 = null;
      private StringBuilder sb = new StringBuilder();
      
      private ConnectedThread mConnectedThread;
      private ConnectedThread mConnectedThread2;
       
      private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
     
      private static String address = "98:D3:31:60:2F:13";
      private static String address2 = "98:D3:31:20:43:5F";
       
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     
        setContentView(R.layout.activity_main);
     
        btn1On = (Button) findViewById(R.id.btn1On);					// кнопка включения
        btn1Off = (Button) findViewById(R.id.btn1Off);				// кнопка выключения
        btn1Reset = (Button) findViewById(R.id.btn1Reset);
        btn2On = (Button) findViewById(R.id.btn2On);					// кнопка включения
        btn2Off = (Button) findViewById(R.id.btn2Off);				// кнопка выключения
        btn2Reset = (Button) findViewById(R.id.btn2Reset);
        txtArduino = (TextView) findViewById(R.id.txtArduino);		// для вывода текста, полученного от Arduino
        
        h = new Handler() {
        	public void handleMessage(android.os.Message msg) {
        		switch (msg.what) {
                case RECIEVE_MESSAGE:													
                	byte[] readBuf = (byte[]) msg.obj;
                	String strIncom = new String(readBuf, 0, msg.arg1);
                	sb.append(strIncom);											
                	int endOfLineIndex = sb.indexOf("\r\n");							
                	if (endOfLineIndex > 0) { 										
                		String sbprint = sb.substring(0, endOfLineIndex);				
                        sb.delete(0, sb.length());										
                    	txtArduino.setText("Ответ от Arduino: " + sbprint); 	      
                    	btn1Off.setEnabled(true);
                    	btn1On.setEnabled(true);
                        btn2Off.setEnabled(true);
                        btn2On.setEnabled(true);
                    }
                	//Log.d(TAG, "...Строка:"+ sb.toString() +  "Байт:" + msg.arg1 + "...");
                	break;
        		}
            };
    	};
         
        btAdapter = BluetoothAdapter.getDefaultAdapter();		
        checkBTState();
     
        btn1On.setOnClickListener(new OnClickListener() {       
          public void onClick(View v) {
            btn1On.setEnabled(false);
            mConnectedThread.write("w");    
            
          }
        });
     
        btn1Off.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
            btn1Off.setEnabled(false);
            mConnectedThread.write("s");   
            
          }
        });
    
        btn1Reset.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
            //btn1Reset.setEnabled(false);
            mConnectedThread.write("x");   
          }
        });
    
        btn2On.setOnClickListener(new OnClickListener() {        
          public void onClick(View v) {
            btn2On.setEnabled(false);
            mConnectedThread2.write("e");   
          }
        });
    
        btn2Off.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
            btn2Off.setEnabled(false);
            mConnectedThread2.write("d");  
          }
        });
    
        btn2Reset.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
            //btn2Reset.setEnabled(false);
            mConnectedThread2.write("c");   
          }
        });
      }
       
      @Override
      public void onResume() {
        super.onResume();
     
        Log.d(TAG, "...onResume - попытка соединения...");
       
        
        BluetoothDevice device = btAdapter.getRemoteDevice(address);
        BluetoothDevice device2 = btAdapter.getRemoteDevice(address2);
       
        try {
          btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
          btSocket2 = device2.createRfcommSocketToServiceRecord(MY_UUID);
        } catch (IOException e) {
          errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + ".");
        }
    
       btAdapter.cancelDiscovery();
       
        Log.d(TAG, "...Соединяемся...");
        try {
          btSocket.connect();
          Log.d(TAG, "...Соединение 1 установлено и готово к передачи данных...");
        } catch (IOException e) {
          try {
            btSocket.close();
          } catch (IOException e2) {
            errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
          }
        }
        try {
          btSocket2.connect();
          Log.d(TAG, "...Соединение 2 установлено и готово к передачи данных...");
        } catch (IOException e) {
          try {
            btSocket2.close();
          } catch (IOException e2) {
            errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
          }
        }
    
        Log.d(TAG, "...Создание Socket...");
       
        mConnectedThread = new ConnectedThread(btSocket);
        mConnectedThread.start();
        mConnectedThread2 = new ConnectedThread(btSocket2);
        mConnectedThread2.start();
      }
     
      @Override
      public void onPause() {
        super.onPause();
     
        Log.d(TAG, "...In onPause()...");
      
        try     {
          btSocket.close();
        } catch (IOException e2) {
          errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
        }
        try     {
          btSocket2.close();
        } catch (IOException e2) {
          errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
        }
      }
       
      private void checkBTState() {
        if(btAdapter==null) { 
          errorExit("Fatal Error", "Bluetooth не поддерживается");
        } else {
          if (btAdapter.isEnabled()) {
            Log.d(TAG, "...Bluetooth включен...");
          } else {
            Intent enableBtIntent = new Intent(btAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
          }
        }
      }
     
      private void errorExit(String title, String message){
        Toast.makeText(getBaseContext(), title + " - " + message, Toast.LENGTH_LONG).show();
        finish();
      }
     
      private class ConnectedThread extends Thread {
    	    private final BluetoothSocket mmSocket;
    	    private final InputStream mmInStream;
    	    private final OutputStream mmOutStream;
    	 
    	    public ConnectedThread(BluetoothSocket socket) {
    	        mmSocket = socket;
    	        InputStream tmpIn = null;
    	        OutputStream tmpOut = null;
    	        try {
    	            tmpIn = socket.getInputStream();
    	            tmpOut = socket.getOutputStream();
    	        } catch (IOException e) { }
    	 
    	        mmInStream = tmpIn;
    	        mmOutStream = tmpOut;
    	    }
    	 
    	    public void run() {
    	        byte[] buffer = new byte[256];  // buffer store for the stream
    	        int bytes; // bytes returned from read()
    	        while (true) {
    	        	try {
    	                bytes = mmInStream.read(buffer);
                            h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();		
    	            } catch (IOException e) {
    	                break;
    	            }
    	        }
    	    }
    	 
    	    public void write(String message) {
    	    	Log.d(TAG, "...Данные для отправки: " + message + "...");
    	    	byte[] msgBuffer = message.getBytes();
    	    	try {
    	            mmOutStream.write(msgBuffer);
    	        } catch (IOException e) {
    	            Log.d(TAG, "...Ошибка отправки данных: " + e.getMessage() + "...");     
    	          }
    	    }
    	 
    	    public void cancel() {
    	        try {
    	            mmSocket.close();
    	        } catch (IOException e) { }
    	    }
    	}
      
    }
    Ответ написан
  • Почему перестало срабатывать onContextItemSelected(MenuItem item)?

    @Afdenis Автор вопроса
    Вопрос снят. У меня были одинаковые идентификаторы для обоих пунктов меню в этих активити.
    Ответ написан
    Комментировать
  • Мучаюсь с Eclipse и Android Studio, в сети почти все уроки на эклипсе, пытаюсь повторить на AS, но пока найдешь нужные пункты трачу нервы, что делать?

    AS ИМХО удобнее Eclipse. Сам сначала начал изучение программирования под Android с Eclipse. но потом пересел на AS. AVD жутко тормознутая вещь, когда наткнулся на просторах интернета на Genymotion, счастью моему не было предела, работает очень шустро, советую использовать именно его.
    Для изучения есть еще неплохой сайт с уроками StartAndroid.ru и на Ютубе канал Devcolibri.
    Ответ написан
    Комментировать
  • Начал изучать android studio, как лучше?

    Есть еще неплохие видеоуроки на Ютубе, канал Devcolibri, они как раз на примере AS все объясняют
    Ответ написан
    Комментировать
  • Как задать цвет строки ListView по определенному условию?

    @Afdenis Автор вопроса
    Решил свою проблему следующим образом: Создал класс, в него скопировал весть текст из SimpleCursorAdapter, и немного модифицировал GetView, теперь он выглядит так:
    public void bindView(View view, Context context, Cursor cursor) {
            final ViewBinder binder = mViewBinder;
            final int count = mTo.length;
            final int[] from = mFrom;
            final int[] to = mTo;
    
            for (int i = 0; i < count; i++) {
                final View v = view.findViewById(to[i]);
                if (v != null) {
                    boolean bound = false;
                    if (binder != null) {
                        bound = binder.setViewValue(v, cursor, from[i]);
                    }
    
                    if (!bound) {
                        String text = cursor.getString(from[i]);
                        view.setBackgroundResource(R.drawable.list_green);
                        if (text == null || text.equals("")) {
                            text = "";
                          view.setBackgroundResource(R.drawable.tripbutton_red);
                        }
    
                        if (v instanceof TextView) {
                            setViewText((TextView) v, text);
                        } else if (v instanceof ImageView) {
                            setViewImage((ImageView) v, text);
                        } else {
                            throw new IllegalStateException(v.getClass().getName() + " is not a " +
                                    " view that can be bounds by this SimpleCursorAdapter");
                        }
                    }
                }
            }
        }
    Ответ написан
    Комментировать
  • Как разобрать строку NMEA?

    @Afdenis Автор вопроса
    Спасибо, так все работает! Но все-так интересно, почему мое условие не работает? Ведь если убрать проверку на совпадение \\d{2}, то в лог выводятся все элементы разделенные запятыми, за исключением пустых.
    Ответ написан
  • Как из одного фрагмента подключить в контейнер другого фрагмена третий фрагмент?

    @Afdenis Автор вопроса
    Разобрался в чем была проблема. MainActivity было подключено не через Support библиотеку. Поменял, теперь все работает как надо.
    Ответ написан
    Комментировать
  • Как обновить данные в DialogFragment при следующем его вызове?

    @Afdenis Автор вопроса
    Обратно я сохраняю в основном активити:
    dlgrdlistchange = new rdlistchange(new OnCompliteListener() {
                @Override
                public void onComplete(String dist, String percent, String speed, Integer id, String raz) {
    db.editRec(dist, percent, null, id, raz, null, speed);
    getSupportLoaderManager().getLoader(0).forceLoad();
    }}

    Но в данном случае это не важно, т.к. проблема в другом, как мне обновить dialogFragment с новыми переданными в него данными?
    Ответ написан
    Комментировать