2

Raghav Sood の Pro Android Augmented Reality ブックからこのコードを見つけました。本に書かれているとおりにコードを実行しようとしましたが、まだ多くの困難に直面しています。プロジェクトのクリーニングとビルドを試みました。プロジェクトのプロパティ ダイアログ ボックスにチェック ボックスをオンにします。私のコードでインポート Android.R の存在を確認しました。私も AndroidSDK をアンインストールし、別の Android バージョンと API のセットで再インストールしました。Eclipseをアンインストールして再インストールしました。

ここに私の ProAndroidAR3Activity.java ファイルがあります

    package com.paar.ch3widgetoverlay;

    import android.app.Activity;
    import android.hardware.Camera;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.widget.TextView;

    public class ProAndroidAR3Activity extends Activity{
SurfaceView cameraPreview;
SurfaceHolder previewHolder;
Camera camera;
boolean inPreview;

final static String TAG = "PAAR";   
SensorManager sensorManager;

int orientationSensor;
float headingAngle;
float pitchAngle;
float rollAngle;

int accelerometerSensor;
float xAxis;
float yAxis;
float zAxis;

LocationManager locationManager;
double latitude;
double longitude;
double altitude;

TextView xAxisValue;
TextView yAxisValue;
TextView zAxisValue;
TextView headingValue;
TextView pitchValue;
TextView rollValue;
TextView altitudeValue;
TextView latitudeValue;
TextView longitudeValue;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); //here is the problem. every part of the code with       R. is having problem


    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 2, locationListener);

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    orientationSensor = Sensor.TYPE_ORIENTATION;
    accelerometerSensor = Sensor.TYPE_ACCELEROMETER;
    sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(orientationSensor), SensorManager.SENSOR_DELAY_NORMAL);
    sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(accelerometerSensor), SensorManager.SENSOR_DELAY_NORMAL);

    inPreview = false;

    cameraPreview = (SurfaceView)findViewById(R.id.cameraPreview);
    previewHolder = cameraPreview.getHolder();
    previewHolder.addCallback(surfaceCallback);
    previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    xAxisValue = (TextView) findViewById(R.id.xAxisValue);
    yAxisValue = (TextView) findViewById(R.id.yAxisValue);
    zAxisValue = (TextView) findViewById(R.id.zAxisValue);
    headingValue = (TextView) findViewById(R.id.headingValue);
    pitchValue = (TextView) findViewById(R.id.pitchValue);
    rollValue = (TextView) findViewById(R.id.rollValue);
    altitudeValue = (TextView) findViewById(R.id.altitudeValue);
    longitudeValue = (TextView) findViewById(R.id.longitudeValue);
    latitudeValue = (TextView) findViewById(R.id.latitudeValue);

これは私のプロジェクトの AndroidManifest.xml ファイルです:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.paar.ch3widgetoverlay"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".ProAndroidAR3Activity" 
        android:screenOrientation = "landscape"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:configChanges = "keyboardHidden|orientation">
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    </application>
    <uses-feature android:name="android.hardware.camera" />  
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    </manifest>

以下は res/layout/main.xml ファイルです

    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
    android:id="@+id/cameraPreview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<TextView
    android:id="@+id/xAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="18dp"
    android:layout_marginTop="15dp"
    android:text="@string/xAxis" />

<TextView
    android:id="@+id/yAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/xAxisLabel"
    android:layout_below="@+id/xAxisLabel"
    android:text="@string/yAxis" />

<TextView
    android:id="@+id/zAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/yAxisLabel"
    android:layout_below="@+id/yAxisLabel"
    android:text="@string/zAxis" />

<TextView
    android:id="@+id/headingLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/zAxisLabel"
    android:layout_below="@+id/zAxisLabel"
    android:layout_marginTop="19dp"
    android:text="@string/heading" />

<TextView
    android:id="@+id/pitchLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/headingLabel"
    android:layout_below="@+id/headingLabel"
    android:text="@string/pitch" />

<TextView
    android:id="@+id/rollLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/pitchLabel"
    android:layout_below="@+id/pitchLabel"
    android:text="@string/roll" />

<TextView
    android:id="@+id/latitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/rollLabel"
    android:layout_below="@+id/rollLabel"
    android:layout_marginTop="34dp"
    android:text="@string/latitude" />

<TextView
    android:id="@+id/longitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/latitudeLabel"
    android:layout_below="@+id/latitudeLabel"
    android:text="@string/longitude" />

<TextView
    android:id="@+id/altitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/longitudeLabel"
    android:layout_below="@+id/longitudeLabel"
    android:text="@string/altitude" />

<TextView
    android:id="@+id/xAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/xAxisLabel"
    android:layout_marginLeft="56dp"
    android:layout_toRightOf="@+id/longitudeLabel"
    android:text="@string/empty" />

<TextView
    android:id="@+id/yAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/yAxisLabel"
    android:layout_alignBottom="@+id/yAxisLabel"
    android:layout_alignLeft="@+id/xAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/zAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/headingLabel"
    android:layout_alignLeft="@+id/yAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/headingValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/headingLabel"
    android:layout_alignBottom="@+id/headingLabel"
    android:layout_alignLeft="@+id/zAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/pitchValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/pitchLabel"
    android:layout_alignBottom="@+id/pitchLabel"
    android:layout_alignLeft="@+id/headingValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/rollValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/latitudeLabel"
    android:layout_alignLeft="@+id/pitchValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/latitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/latitudeLabel"
    android:layout_alignLeft="@+id/rollValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/longitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/longitudeLabel"
    android:layout_alignBottom="@+id/longitudeLabel"
    android:layout_alignLeft="@+id/latitudeValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/altitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/altitudeLabel"
    android:layout_alignBottom="@+id/altitudeLabel"
    android:layout_alignLeft="@+id/longitudeValue"
    android:text="@string/empty" />

    </RelativeLayout>`

以下は res/values/strings.xml ファイルです。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

    <string name="hello">Hello World, ProAndroidAR3Activity!</string>
    <string name="app_name">Pro Android AR 3 Widget Overlay</string>
    <string name="xAxis">X Axis:</string>
    <string name="yAxis">Y Axis:</string>
<string name="zAxis">Z Axis:</string>
<string name="heading">Heading:</string>
<string name="pitch">Pitch:</string>
<string name="roll">Roll:</string>
<string name="altitude">Altitude:</string>
<string name="longitude">Longitude:</string>
<string name="latitude">Latitude:</string>
<string name="empty"></string>
    </resources>

minsdk のバージョンを API 7 の 2.1 に設定し、コンパイル SDK のバージョンを API 16 の 4.1 に設定しました...

私を助けてください...

4

4 に答える 4

1

Eclipse の「gen」フォルダー (/gen/[yourpackage]/R.java) の下に、適切に生成された新しい R.java クラスがありますか? アクティビティと同じパッケージにある場合は、手動でインポートする必要はありません!

XML が正しければそこにあるはずです。XML に構文エラーがある場合、Eclipse は R.java を生成しません。

さらに、レイアウト ファイルの末尾に奇妙な '`' 文字があります。これが投稿の偶然かどうかはわかりませんが、これは問題になる可能性があります。

</RelativeLayout>`

それが役立つことを願っています!

于 2012-09-17T18:54:12.420 に答える
1

(これはコメントするには大きすぎるため、user1649030 の投稿を拡大します:)

通常、「R が見つかりません」というエラーには 2 つの原因があります。1 つは、R.java がまったくビルドされない原因となる xml ファイルのエラーです。R.java の 'gen' ディレクトリの下を調べます。見つからない場合は、それが問題です。不正な xml ファイルを探します。

R.javaビルドされている場合は、それへのディレクトリ パスをメモします。これは、マニフェストで指定されたパッケージ名と一致します。あなたの場合、gen/com/paar/ch3widgetoverlay/R.java になります。

このクラスは、src/com/paar/ch3widgetoverlay/ 内のすべてのソース ファイルによって暗黙的にインポートされます。

R にアクセスする必要がある他のディレクトリ内のソース ファイルは、明示的に com.paar.ch3widgetoverlay.R をインポートする必要があります。

それはそれをかなりカバーするはずです。

于 2012-09-18T00:06:02.643 に答える
0

Android ではなく、Java から R クラスをインポートする必要があります。android.R をインポートすると競合が発生します。R クラスが生成され、特にチュートリアルからコードを取得した場合は、ch3widgetoverlay と同じパッケージに含まれている場合と含まれていない場合があります。eclipse の gen フォルダーを調べて、R クラスが含まれているパッケージを確認します。

于 2012-09-17T18:48:46.863 に答える
0

com.paar.ch3widgetoverlay.R をインポートしてみてください

于 2012-09-17T18:50:18.243 に答える