qwer1106 2021-06-08 07:50 采纳率: 0%
浏览 17

能成功运行但不能安装

location.m

#import <Foundation/Foundation.h>
#import "LocateMotion.h"

@implementation LocateMotion

- (id)initWithLocation:(CLLocation *)location
           andActivity:(CMMotionActivity *)activity {
    _location = location;
    _activity = activity;
    
    return self;
}

- (BOOL)isSameActivity:(LocateMotion *)lm {
    if(
       (_activity.stationary == lm.activity.stationary) &&
       (_activity.walking == lm.activity.walking) &&
       (_activity.running == lm.activity.running) &&
       (_activity.automotive == lm.activity.automotive) &&
       (_activity.unknown == lm.activity.unknown)
       ) {
        return YES;
    }
    return NO;
}

@end

location.h

#ifndef LocateMotion_h
#define LocateMotion_h
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <CoreMotion/CoreMotion.h>

@interface LocateMotion : NSObject

@property (nonatomic, strong) CLLocation         *location;
@property (nonatomic, strong) CMMotionActivity   *activity;

- (id)initWithLocation:(CLLocation*)location
           andActivity:(CMMotionActivity*)activity;
- (BOOL)isSameActivity:(LocateMotion*)anotherLocateMotion;

@end

#endif /* LocateMotion_h */

ViewController.h

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController
<CLLocationManagerDelegate, MKMapViewDelegate>


@end

ViewContropller.m

#import <CoreMotion/CoreMotion.h>
#import <MapKit/MapKit.h>
#import "ViewController.h"
#import "LocateMotion.h"

#pragma mark - ColorPolyline class

@interface ColorPolyline : MKPolyline
@property (strong, nonatomic) UIColor *drawColor;

@end

@implementation ColorPolyline

@end

#pragma  mark - MotionLogViewController

@interface ViewController()
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end

@implementation ViewController {
    CLLocationManager  *_locationManager;
    NSMutableArray   *_locationItems;
    CMMotionActivityManager *_activityManager;
    CMMotionActivity *_motionActivity;
    BOOL   _deferredLocationUpdates;
    NSString  *_lastAnnotation;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _locationItems = [NSMutableArray array];
    _motionActivity = nil;
    _deferredLocationUpdates = NO;
    _lastAnnotation = @"";
    
    _locationManager = [[CLLocationManager alloc] init];
    _locationManager.delegate = self;
    _locationManager.activityType = CLActivityTypeOtherNavigation;
    _locationManager.distanceFilter = kCLDistanceFilterNone;
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [_locationManager startUpdatingLocation];
    
    if([CMMotionActivityManager isActivityAvailable]) {
        [self startGettingMotionActivity];
    }
 }
- (void)viewDidAppear:(BOOL)animated {
    [_mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated {
    if([CMMotionActivityManager isActivityAvailable]) {
        [self stopGettingMotionActivity];
    }
}

#pragma mark - location Job

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations {
    
    for(CLLocation *loc in locations) {
        LocateMotion *lm = [[LocateMotion alloc] initWithLocation:loc andActivity:_motionActivity];
        if(_locationItems.count >1){
            LocateMotion *lastLM = [_locationItems lastObject];
            
            if(![lastLM isSameActivity:lm]) {
                [self drawActivity];
        }
    }
        [_locationItems addObject:lm];
}
    if(!_deferredLocationUpdates) {
        CLLocationDistance distance = 100.0;
        NSTimeInterval time = 30.0;
        [_locationManager allowDeferredLocationUpdatesUntilTraveled:distance timeout:time];
        
        _deferredLocationUpdates = YES;
    }
    }
-(void)locationManager:(CLLocationManager *)manager
didFinishDeferredUpdatesWithError:(NSError *)error {
    _deferredLocationUpdates = NO;
    [self drawActivity];
}

#pragma mark - Motion Job

- (void)startGettingMotionActivity {
    _activityManager = [[CMMotionActivityManager alloc]init];
    
    [_activityManager startActivityUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMMotionActivity *activity) {
        dispatch_async(dispatch_get_main_queue(), ^{
            self->_motionActivity = activity;
        });
    }];
 }

-(void)stopGettingMotionActivity {
    [_activityManager stopActivityUpdates];
    _activityManager = nil;
}

#pragma mark - Map job

- (void)drawActivity {
    if(_locationItems) {
        if(_locationItems.count > 1) {
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            NSString *outputDateFormatterStr= @"HH:mm";
            [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
            [dateFormatter setDateFormat:outputDateFormatterStr];
            
            CLLocationCoordinate2D coordinates[500];
            for (int index = 0; index < _locationItems.count; index++) {
                LocateMotion *lm = [_locationItems objectAtIndex:index];
                CLLocationCoordinate2D coordinate = lm.location.coordinate;
                coordinates[index] = coordinate;
                
                NSString *annStr =
                [dateFormatter stringForObjectValue:lm.location.timestamp];
                int minute = [[annStr substringFromIndex:3] intValue];
                
                if(minute%5==0) {
                    if(![annStr isEqualToString:_lastAnnotation]) {
                        MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
                        point.coordinate = coordinate;
                        point.title = annStr;
                        [_mapView addAnnotation:point];
                        [_mapView selectAnnotation:point animated:YES];
                        _lastAnnotation = annStr;
                    }
                }
            }
            ColorPolyline *polyline=[ColorPolyline polylineWithCoordinates:coordinates count:_locationItems.count];
            polyline.drawColor = [self getActivityColor:[_locationItems lastObject]];
            [_mapView addOverlay:polyline level:MKOverlayLevelAboveRoads];
            
            for (int index = 0; index < _locationItems.count-1; index++) {
                [_locationItems removeObjectAtIndex:0];
            }
        }
    }
 }
- (MKOverlayRenderer *)mapViewrendererForOverlay:(id < MKOverlay >)overlay {
    ColorPolyline *polyline = (ColorPolyline*) overlay;
                               MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:polyline];
    renderer.strokeColor = [polyline.drawColor colorWithAlphaComponent:0.7];
    renderer.lineWidth = 10.0;
    
    return (MKOverlayRenderer*)renderer;
 }

- (UIColor *)getActivityColor:(LocateMotion*)lm {
    if(lm.activity.stationary) return [UIColor blueColor];
    if(lm.activity.walking) return [UIColor greenColor];
    if(lm.activity.running) return [UIColor orangeColor];
    if(lm.activity.automotive) return [UIColor redColor];
    return [UIColor grayColor];
}
@end
  • 写回答

2条回答 默认 最新

  • CSDN专家-Fay 2021-06-08 08:17
    关注

    能成功但不能安装是什么意思,有没有具体的错误提示

    评论

报告相同问题?

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误