2016-02-11 2 views
0

Я пытаюсь реализовать внутреннее местоположение во втором основном действии. Я получаю следующие ошибки. Я хочу, когда вы нажмете кнопку внутренней навигации, чтобы иметь карту в помещении и показать свое местоположение в помещении. Спасибо заранееОшибка: (145, 40) ошибка: не удается найти символьную переменную activity_maps

 Information:Gradle tasks [:app:assembleDebug] 
    Error:(167, 99) error: cannot find symbol variable map 
    Error:(145, 40) error: cannot find symbol variable activity_maps 

Main2Activity

package com.Design.Design.activity; 

import android.graphics.Bitmap; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.os.Looper; 
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 
import android.widget.Toast; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptor; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.GroundOverlay; 
import com.google.android.gms.maps.model.GroundOverlayOptions; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.indooratlas.android.sdk.IALocation; 
import com.indooratlas.android.sdk.IALocationListener; 
import com.indooratlas.android.sdk.IALocationManager; 
import com.indooratlas.android.sdk.IALocationRequest; 
import com.indooratlas.android.sdk.IARegion; 
import com.indooratlas.android.sdk.resources.IAFloorPlan; 
import com.indooratlas.android.sdk.resources.IALatLng; 
import com.indooratlas.android.sdk.resources.IALocationListenerSupport; 
import com.indooratlas.android.sdk.resources.IAResourceManager; 
import com.indooratlas.android.sdk.resources.IAResult; 
import com.indooratlas.android.sdk.resources.IAResultCallback; 
import com.indooratlas.android.sdk.resources.IATask; 
import com.squareup.picasso.Picasso; 
import com.squareup.picasso.RequestCreator; 
import com.squareup.picasso.Target; 

import android.os.Bundle; 
import android.app.Activity; 

import com.lightcurb.example.R; 

public class Main2Activity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    class MapsOverlayActivity extends FragmentActivity { 

     private static final String TAG = "IndoorAtlasExample"; 

     private static final float HUE_IABLUE = 200.0f; 

     /* used to decide when bitmap should be downscaled */ 
     private static final int MAX_DIMENSION = 2048; 

     private GoogleMap mMap; // Might be null if Google Play services APK is not available. 
     private Marker mMarker; 
     private GroundOverlay mGroundOverlay; 
     private IALocationManager mIALocationManager; 
     private IAResourceManager mResourceManager; 
     private IATask<IAFloorPlan> mFetchFloorPlanTask; 
     private Target mLoadTarget; 
     private boolean mCameraPositionNeedsUpdating; 

     /** 
     * Listener that handles location change events. 
     */ 
     private IALocationListener mListener = new IALocationListenerSupport() { 

      /** 
      * Location changed, move marker and camera position. 
      */ 
      @Override 
      public void onLocationChanged(IALocation location) { 

       Log.d(TAG, "new location received with coordinates: " + location.getLatitude() 
         + "," + location.getLongitude()); 

       if (mMap == null) { 
        // location received before map is initialized, ignoring update here 
        return; 
       } 

       LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
       if (mMarker == null) { 
        // first location, add marker 
        mMarker = mMap.addMarker(new MarkerOptions().position(latLng) 
          .icon(BitmapDescriptorFactory.defaultMarker(HUE_IABLUE))); 
       } else { 
        // move existing markers position to received location 
        mMarker.setPosition(latLng); 
       } 

       // our camera position needs updating if location has significantly changed 
       if (mCameraPositionNeedsUpdating) { 
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17.5f)); 
        mCameraPositionNeedsUpdating = false; 
       } 
      } 
     }; 

     /** 
     * Region listener that when: 
     * <ul> 
     * <li>region has entered; marks need to move camera and starts 
     * loading floor plan bitmap</li> 
     * <li>region has existed; clears marker</li> 
     * </ul>. 
     */ 
     private IARegion.Listener mRegionListener = new IARegion.Listener() { 

      @Override 
      public void onEnterRegion(IARegion region) { 

       if (region.getType() == IARegion.TYPE_UNKNOWN) { 
        Toast.makeText(MapsOverlayActivity.this, "Moved out of map", 
          Toast.LENGTH_LONG).show(); 
        return; 
       } 

       // entering new region, mark need to move camera 
       mCameraPositionNeedsUpdating = true; 

       final String newId = region.getId(); 

       Toast.makeText(MapsOverlayActivity.this, newId, Toast.LENGTH_SHORT).show(); 
       fetchFloorPlan(newId); 
      } 

      @Override 
      public void onExitRegion(IARegion region) { 
       if (mMarker != null) { 
        mMarker.remove(); 
        mMarker = null; 
       } 
      } 

     }; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_maps); 

      // prevent the screen going to sleep while app is on foreground 
      findViewById(android.R.id.content).setKeepScreenOn(true); 

      // instantiate IALocationManager and IAResourceManager 
      mIALocationManager = IALocationManager.create(this); 
      mResourceManager = IAResourceManager.create(this); 
     } 

     @Override 
     protected void onDestroy() { 
      super.onDestroy(); 
      // remember to clean up after ourselves 
      mIALocationManager.destroy(); 
     } 

     @Override 
     protected void onResume() { 
      super.onResume(); 
      if (mMap == null) { 
       // Try to obtain the map from the SupportMapFragment. 
       mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
         .getMap(); 
      } 

      // start receiving location updates & monitor region changes 
      mIALocationManager.requestLocationUpdates(IALocationRequest.create(), mListener); 
      mIALocationManager.registerRegionListener(mRegionListener); 
     } 

     @Override 
     protected void onPause() { 
      super.onPause(); 
      // unregister location & region changes 
      mIALocationManager.removeLocationUpdates(mListener); 
      mIALocationManager.registerRegionListener(mRegionListener); 
     } 


     /** 
     * Sets bitmap of floor plan as ground overlay on Google Maps 
     */ 
     private void setupGroundOverlay(IAFloorPlan floorPlan, Bitmap bitmap) { 

      if (mGroundOverlay != null) { 
       mGroundOverlay.remove(); 
      } 

      if (mMap != null) { 
       BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); 
       IALatLng iaLatLng = floorPlan.getCenter(); 
       LatLng center = new LatLng(iaLatLng.latitude, iaLatLng.longitude); 
       GroundOverlayOptions fpOverlay = new GroundOverlayOptions() 
         .image(bitmapDescriptor) 
         .position(center, floorPlan.getWidthMeters(), floorPlan.getHeightMeters()) 
         .bearing(floorPlan.getBearing()); 

       mGroundOverlay = mMap.addGroundOverlay(fpOverlay); 
      } 
     } 

     /** 
     * Download floor plan using Picasso library. 
     */ 
     private void fetchFloorPlanBitmap(final IAFloorPlan floorPlan) { 

      final String url = floorPlan.getUrl(); 

      if (mLoadTarget == null) { 
       mLoadTarget = new Target() { 

        @Override 
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
         Log.d(TAG, "onBitmap loaded with dimensions: " + bitmap.getWidth() + "x" 
           + bitmap.getHeight()); 
         setupGroundOverlay(floorPlan, bitmap); 
        } 

        @Override 
        public void onPrepareLoad(Drawable placeHolderDrawable) { 
         // N/A 
        } 

        @Override 
        public void onBitmapFailed(Drawable placeHolderDraweble) { 
         Toast.makeText(MapsOverlayActivity.this, "Failed to load bitmap", 
           Toast.LENGTH_SHORT).show(); 
        } 
       }; 
      } 

      RequestCreator request = Picasso.with(this).load(url); 

      final int bitmapWidth = floorPlan.getBitmapWidth(); 
      final int bitmapHeight = floorPlan.getBitmapHeight(); 

      if (bitmapHeight > MAX_DIMENSION) { 
       request.resize(0, MAX_DIMENSION); 
      } else if (bitmapWidth > MAX_DIMENSION) { 
       request.resize(MAX_DIMENSION, 0); 
      } 

      request.into(mLoadTarget); 
     } 


     /** 
     * Fetches floor plan data from IndoorAtlas server. 
     */ 
     private void fetchFloorPlan(String id) { 

      // if there is already running task, cancel it 
      cancelPendingNetworkCalls(); 

      final IATask<IAFloorPlan> task = mResourceManager.fetchFloorPlanWithId(id); 

      task.setCallback(new IAResultCallback<IAFloorPlan>() { 

       @Override 
       public void onResult(IAResult<IAFloorPlan> result) { 

        if (result.isSuccess() && result.getResult() != null) { 
         // retrieve bitmap for this floor plan metadata 
         fetchFloorPlanBitmap(result.getResult()); 
        } else { 
         // ignore errors if this task was already canceled 
         if (!task.isCancelled()) { 
          // do something with error 
          Toast.makeText(MapsOverlayActivity.this, 
            "loading floor plan failed: " + result.getError(), Toast.LENGTH_LONG) 
            .show(); 
          // remove current ground overlay 
          if (mGroundOverlay != null) { 
           mGroundOverlay.remove(); 
           mGroundOverlay = null; 
          } 
         } 
        } 
       } 
      }, Looper.getMainLooper()); // deliver callbacks using main looper 

      // keep reference to task so that it can be canceled if needed 
      mFetchFloorPlanTask = task; 

     } 

     /** 
     * Helper method to cancel current task if any. 
     */ 
     private void cancelPendingNetworkCalls() { 
      if (mFetchFloorPlanTask != null && !mFetchFloorPlanTask.isCancelled()) { 
       mFetchFloorPlanTask.cancel(); 
      } 
     } 
    } 
} 

} 

AndroidManifest

<!-- SDK feature --> 
<uses-feature 
    android:name="android.hardware.bluetooth_le" 
    android:required="true" /> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:name="com.Design.Design.LCExampleApplication" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="Design" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name="com.Design.Design.activity.MainActivity" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="Design" 
     android:noHistory="true" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <meta-data 
     android:name="com.indooratlas.android.sdk.API_KEY" 
     android:value="c24c139a-0fd8-4072-b92d-440f1369a413" /> 
    <meta-data 
     android:name="com.indooratlas.android.sdk.API_SECRET" 
     android:value="jU)0v5VVdUGfpE69DUS!zLmqVhA1wiPNymesYonp6XSArIshOSfYKbhJP9v6zIpdl8U9hOhrgQiPWYYjwSWUjgjDlbi44MNu0P52dwglirV0qTAWFfY7sj)ClhXp80i1" /> 
    <meta-data 
     android:name="io.fabric.ApiKey" 
     android:value="309aec780906102743dd39ea4d8eddc07f46eed8" /> 

    <activity 
     android:name="com.Design.Design.activity.Main2Activity" 
     android:label="@string/title_activity_main2"></activity> 
</application> 

build.gradle (модуль: приложение)

buildscript { 
repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 

dependencies { 
    classpath 'io.fabric.tools:gradle:1.+' 
} 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

android { 
compileSdkVersion 23 
defaultConfig { 
    applicationId "com.lightcurb.example" 
    minSdkVersion 18 
    targetSdkVersion 21 
    versionCode 9 
    versionName "1.0.0" 
} 
buildTypes { 
    release { 
    minifyEnabled false 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    } 
    buildToolsVersion '23.0.2' 
    splits { 
    abi { 
     enable true 
     reset() 
     include 'x86', 'armeabi-v7a' 
     universalApk true 
     } 
    } 
} 

repositories { 
mavenCentral() 
flatDir { 
    dirs 'libs' 
} 
    maven { url 'https://maven.fabric.io/public' } 
} 

dependencies { 
compile 'com.indooratlas.android:indooratlas-android-sdk:[email protected]' 
compile 'com.radiusnetworks:AndroidIBeaconLibrary:[email protected]' 
compile 'com.lightcurb.sdk:LightcurbSDK:[email protected]' 
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
    transitive = true; 
    } 
} 
repositories{ 
    maven { 
    url "http://indooratlas-ltd.bintray.com/mvn-public" 
    } 
} 

MainActivity:

package com.Design.Design.activity; 

    import android.app.Activity; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.content.IntentFilter; 
    import android.location.Criteria; 
    import android.location.LocationManager; 
    import android.graphics.Color; 
    import android.os.Bundle; 
    import android.widget.RelativeLayout; 
     import android.widget.Button; 
     import android.widget.TextView; 

    import com.crashlytics.android.Crashlytics; 
    import com.lightcurb.example.R; 
    import com.lightcurb.sdk.api.LCAPIManager; 
    import com.lightcurb.sdk.api.request.LCAPIResponse; 
    import com.lightcurb.sdk.model.LCNotification; 
    import io.fabric.sdk.android.Fabric; 

    public class MainActivity extends Activity 
    { 
    private static final String TAG = MainActivity.class.getPackage() + "." + MainActivity.class.getSimpleName(); 

private TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Fabric.with(this, new Crashlytics()); 

    setContentView(R.layout.activity_main); 

    RelativeLayout StevesLayout = new RelativeLayout(this); 
    StevesLayout.setBackgroundColor(Color.BLUE); 

    RelativeLayout.LayoutParams buttonDetails = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT 
    ); 

    buttonDetails.addRule(RelativeLayout.CENTER_HORIZONTAL); 
    buttonDetails.addRule(RelativeLayout.CENTER_VERTICAL); 

    Button NavButton = new Button(this); 
    NavButton.setText("Indoor Navigation"); 
    NavButton.setBackgroundColor(Color.WHITE); 







    NavButton.setId(1); 






    StevesLayout.addView(NavButton,buttonDetails); 
    setContentView(StevesLayout); 

    textView = (TextView) findViewById(R.id.textView); 
    Button addBtn = (Button) findViewById(R.id.button); 
} 

@Override 
protected void onStart() 
{ 
    super.onStart(); 

    IntentFilter apiManagerFilter = new IntentFilter(); 
    apiManagerFilter.addAction(LCAPIManager.REGISTER_FOUND_BEACONS_REQUEST_STATUS_CHANGE); 
    registerReceiver(apiManagerReceiver, apiManagerFilter); 
    } 

    @Override 
    protected void onStop() 
    { 
    super.onStop(); 

    unregisterReceiver(apiManagerReceiver); 
    } 

    private BroadcastReceiver apiManagerReceiver = new BroadcastReceiver() 
    { 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
    Bundle extras = intent.getExtras(); 
    String status = extras.getString("status"); 
    LCAPIResponse response = extras.getParcelable("response"); 

    if (status.equals("finished") && response.isSuccess()) 
    { 
     LCNotification notification = extras.getParcelable("objectdata"); 
     textView.setText(notification.getPromotion().getDescription()); 
     } 
    } 
    }; 
} 

ответ

0

Почему вы импортировать R из другого пакета? Из вашего кода я вижу, что вы импортируете R из com.lightcurb.example, который представляет собой другой пакет.

Таким образом удалить,

import com.lightcurb.example.R; 

от Вашего импорта.

Обратите внимание, что вам не нужно импортировать R, так как это файл R.java, который создается после успешного завершения сборки. И, если у вас есть какие-либо ошибки (т. Е. Красная подчеркивание под R), то это означает, что в вашем проекте есть некоторая ошибка сборки. Если, так что, пожалуйста, проверьте свои файлы xml, файлы градиента и т. Д.

+0

Спасибо, но теперь он говорит мне, что Ошибка: (47, 25) error: package R не существует Ошибка: (145, 33) error: package R не существует Ошибка: (167, 96) Ошибка: пакет R не существует – Steve

+0

удалить все операторы импорта, которые импортируют R – Lal

+0

Решена ли проблема @Steve? – Lal

Смежные вопросы