2014-01-12 2 views
0

저는 많은 센서를 사용할 응용 프로그램을 만들고 있습니다. 각 센서는 내부 데이터베이스에 직접 값을 기록하므로 각 센서에는 자체 클래스가 있습니다.여러 센서를 하나의 ACtivity로 통합하십시오.

하나의 활동 ActivityRecord에는 센서 클래스에서 책임있는 메소드의 활성화를 실행하는 버튼이 있습니다.

public void onSensorChanged(SensorEvent event) { 
    lightLux = event.values[0]; //Final output of this sensor. 
    Lux = String.valueOf(lightLux); 
    Log.d("LightSensor", Lux); 

    TextView tvLightSensorLux = (TextView) findViewById(R.id.tvLightSensorLux); 
    tvLightSensorLux.setText(Lux); 

} 

lightLux는 플로트 출력 또는 럭스 문자열 출력되는 : 들어

RecordButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // Start/Stop Recording 
      if (!isRecording) { 
       startRecording(); 

       RecordButton.setText("Stop Recording"); 
      } else { 

       stopRecording(); 
       RecordButton.setText("Start Recording"); 
      } 

     } 

    }); 

    return rootView; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

} 

private void startRecording() { 

    isRecording = true; 

    //Light Sensor stuff here 

    } 

는 지금은 최종 출력으로 그렇게하는 LightSensor.java 클래스가 있습니다. 그래서 FragmentRecord.java에서 나는 LuxS의 LightSensor lightLux 나 setText의 출력을 tv에 보여주고 싶습니다.

질문 : LightSensor.java에서 lightLux 및 Lux 값을 FragmentRecord.java로 가져 오는 방법은 무엇입니까? 이것은 내가 앞으로 만들 모든 다른 센서에도 적용됩니다.

내가 업데이트 할 일이있을 때 이미

답변

1

귀하의 센서 클래스 활동을 통보해야 * .LightSensor을 가져 왔습니다.

옵션 1 -과 같이 인터페이스를 정의 :

interface OnSensorChanges { 
    void onSensorChanged(int sensorId, double sensorValue); 
} 

이 활동에 구현하고 각각의 센서로 전달합니다. 센서가 인터페이스의 메소드를 호출하면 사용자 활동이 UI를 업데이트합니다.

물론 모든 센서가 숫자를 전송하지 않는다면 (일부 전송 좌표), Bundle의 값을 래핑해야합니다 (단일 인터페이스가 다중 인터페이스 IMO보다 우수하기 때문에).

옵션 2 - 당신은 더 '안드로이드 같은'솔루션을 원하는 경우 :

이 서비스에 센서 리스너를 구현 및 센서 변경 사항을보고하는 방송을 전송합니다. 당신은 좀 더 희박해질 수 있도록 LocalBroadcastManager을 사용하는 것이 좋습니다. LocalBroadcastManager은 지원 라이브러리에 포함되어 있습니다.

+0

cool. 그래서 저는 각 * Sensor.java에서 인터페이스를 추가하거나 작성한다는 것을 알고 있습니다. 모든 센서 출력이 표시되어야하는 통합보기에서보기는 각 개별 인터페이스에 연결해야합니다. 각 Sensor.interface가 변경되면 자체적으로 업데이트되는 동안 통합보기 (ActivityRecord)의 UI에 업데이트가 전송됩니까? –

+0

실제로 다시 힌트를 다시 읽으면, 나는 그것을 뒤로 이해했다고 생각합니다. ActivityRecord에서 OnSensorChanges 인터페이스를 삽입해야합니다. 각 센서에는 해당 방법에 대한 참조가 있어야합니다. 기본적으로 각 * Sensor.java가 업데이트되면 UI 업데이트를 위해 해당 인터페이스로 업데이트를 보냅니다. –

+0

한 가지 더 질문 : ActivityRecorder는 그래프 및 숫자와 같은 센서의 결과를 보여주는 레이아웃이므로 ActivityRecorder가 모든 센서를 수신하는 수신기 클래스 여야한다고 생각합니까? 또는 모든 브로드 캐스트를 수락하고 Receiver에서 Recorder로 업데이트를 가져 오는 별도의 Receiver.java를 만드는 것이 더 낫습니까? 아니면 제가 이미 가지고있는 것과 똑같은 문제입니까? –

관련 문제