私は Java と Android の両方の開発に不慣れです。しかし、近接センサーの値を読み取る簡単な Android アプリケーションを作成することができました。また、Google スプレッドシートのセルを編集する Java アプリケーションを作成することもできました。
だから今、私は2つを組み合わせて、近接センサーの値に基づいてGoogleスプレッドシートのセルの値を変更するAndroidアプリを用意したいと考えています。
しかし、コードを組み合わせるとアプリがクラッシュし、Eclipse 環境とデバッガーについて十分な知識がなく、何が起こっているのかを把握できません。アプリは正常にインストールされ、昼食をとります。メイン ビューがほんの 1 秒間表示された後、アプリがクラッシュします。
package com.example.mysensorproject;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
import com.google.gdata.client.spreadsheet.SpreadsheetService;
import com.google.gdata.data.spreadsheet.CellEntry;
import com.google.gdata.data.spreadsheet.CellFeed;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;
public class MainActivity extends Activity implements SensorEventListener {
TextView proxText;
SensorManager sm;
Sensor proxSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm=(SensorManager)getSystemService(SENSOR_SERVICE);
proxSensor=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
proxText=(TextView)findViewById(R.id.proximityTextView);
sm.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
proxText.setText(String.valueOf(event.values[0]));
//change value in spreadsheet
SpreadsheetService service = new SpreadsheetService("wise");
service.setProtocolVersion(SpreadsheetService.Versions.V3);
try {
service.setUserCredentials("email@example.com", "password");
} catch (AuthenticationException e) {
e.printStackTrace();
}
URL url = null;
try {
url = new URL("https://spreadsheets.google.com/feeds/cells/0AuDoKcCfLURKdEQ3bVFLemY5aVh2SGQySE10QTYzRGc/od6/private/full");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CellFeed cellFeed = null;
try {
cellFeed = service.getFeed(url, CellFeed.class);
// System.out.println("Cell Feed Worked");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (CellEntry cell : cellFeed.getEntries()) {
cell.changeInputValueLocal(String.valueOf(event.values[0]));
try {
cell.update();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
*/
}
}