본문 바로가기

ios 뽀개기180

core audioqueue player 에 대하여 core audioqueue player 에 대하여 코어오디오를 이용해서 음원을 플레이 하는 어플을 간단하게 만들어보았다. 애플 오디오 프로그래밍 가이드 문서를 기반으로 구현을 하였다. 작동 순서는 prepare 버튼을 눌러서 먼저 재생할 오디오 파일 형식, 파일 위치와 관련된 설정을 해준다. 그 후 start 버튼을 눌러서 음원을 재생한다. 재생을 하면 재생이 완료 될때까지 끊임없이 콜백함수가 호출되면서 오디오 파일에서 읽은 데이터를 버퍼에 넣고 출력한다. 그리고 음악이 종료되며면 dispose 버튼을 눌러서 메모리에 할당된 큐를 해제해준다. 처음에 이 프로세서를 알기까지 꽤 많은 시간이 걸렸다. 단순하게 오디오를 재생하려면 이미 만들어져있는 MediaPlayer 오디오 프레임워크를 가져다 쓰면된다. .. 2019. 3. 28.
core audio queue service (ios recording) core audio queue service 본글은 애플의 오디오큐서비스프로그래밍 가이드 문서를 참고해서 작성했습니다. 뷰 코드 //step 1. 라이브러리 임포트 #import #import #import #import #import //step1. 상태를 관리하기 위한 사용자정의 구조 static const int kNumberBuffers = 3; // 1 struct AQRecorderState { AudioStreamBasicDescription mDataFormat; // 2 . 오디오 데이터 포멧, mQueue에 사용된다. AudioQueueRef mQueue; // 3. 앱에 의해 생성되는 레코딩 오디오 큐 AudioQueueBufferRef mBuffers[kNumberBuffers]; .. 2019. 3. 26.
ios 카메라 화면 자동회전 (camera auto rotation) ios 카메라 화면 자동회전 (camera auto rotation) 코드 #import #import "ViewController.h" //화면 전체 가로, 세로길이 구하기#define kScreenWidth [UIScreen mainScreen].bounds.size.width#define kScreenHeight [UIScreen mainScreen].bounds.size.height //screen orientationbool g_isPortraitMode; //현재 세로냐 가로냐float _screenWidth_Landscape; // 가로일때 가로길이float _screenHeight_Landscape; //가로일때 세로길이float _screenWidth_Portrait; //세로일때 가로길.. 2019. 3. 8.
코어오디오 MediaPlayer 구현 MediaPlayer 구현 네비게이션 info.plist storyboard #import @interface ViewController : UIViewController @end //MediaPlayer 임포트!#import #import "ViewController.h" @interface ViewController () @property (strong,nonatomic) MPMediaPickerController *mpPickerVC; //픽커 컨트롤러@property (strong,nonatomic) MPMediaItemCollection *slctitems; //선택된 아이템@property (strong,nonatomic) MPMusicPlayerController *appMusicPlayer.. 2019. 3. 4.
엔터프라이즈 계정으로 배포 http://blog.saltfactory.net/distribute-ios-app-using-with-dropbox-without-server/ https://imhaba.tistory.com/41 복사한 링크 텍스트를 텍스트 에디터에 복붙 한다. 예 > https://www.dropbox.com/s/xbrrsqruajf27p0/apnsguide.ipa?dl=0 에디터를 통해서 www.dropbox.com 을 아래 텍스트로 치환하고 url 텍스트 끝의 ?dl=0 를 삭제한다. dl.dropboxusercontent.com 예> https://dl.dropboxusercontent.com/s/xbrrsqruajf27p0/apnsguide.ipa https://dl.dropboxusercontent.com.. 2019. 2. 15.
이미지 자르기 이미지 자르기 - (IBAction)CaptureAction:(id)sender { NSLog(@"캡쳐 버튼 눌렸습니다."); CGSize screenS = myImageView.frame.size; CGFloat delX = myImageView.image.size.width / screenS.width; CGFloat delY = myImageView.image.size.height / screenS.height; NSLog(@"myImageView.image.size.width : %f" ,myImageView.image.size.width ); NSLog(@"myImageView.image.size.height : %f" ,myImageView.image.size.height ); NSLog(@".. 2019. 1. 27.
UIpangesture로 UIView 옮기기& 특정 프레임 넘어가지 않게 설정 UIpangesture로 UIView 옮기기& 특정 프레임 넘어가지 않게 설정 소스 #import "ViewController.h" @interface ViewController (){ //사진틀 IBOutlet UIImageView *myImageView; //뷰파인더를 옮기기 전 위치 CGPoint beforPoint; //뷰파인더 UIView *viewFinder; //뷰파인더를 감싸고 있는 네 개의 점. UIView *leftTopPoint; UIView *rightTopPoint; UIView *leftDownPoint; UIView *rightDownPoint; UIBezierPath *blackPath; //검은색 블러 UIBezierPath *framePath; //포커스 CAShapeLa.. 2019. 1. 25.
일정시간이 지난 파일 자동 삭제하기 일정시간이 지난 파일 자동 삭제하기 앱실행할때 호출//일정 시간 지난 미디어 파일 지우기 [self deleteOverDateMediaFile]; //삭제 기준 날짜 가져오기 -(float)getDeleteStandardDateSeconds{ //기준이 되는 날짜 // 1. 3일 전 날짜를 구함 -> 데이터 포멧 변환 -> string으로 변환 -> 초 로변환 (568393200.000000) NSDateComponents* deltaComps = [[NSDateComponents alloc] init]; [deltaComps setDay: -3]; NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDa.. 2019. 1. 9.
날짜데이터를 문자로 변환 날짜데이터를 문자로 변환 //기준이 되는 날짜 // 1. 3일 전 날짜를 구함 -> 데이터 포멧 변환 -> string으로 변환 -> 초 로변환 (568393200.000000) NSDateComponents* deltaComps = [[NSDateComponents alloc] init]; [deltaComps setDay:-3]; NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @".. 2019. 1. 9.
AppDelegate 사용자 터치 감지하기 AppDelegate 사용자 터치 감지하기 .h #import #import "SecurityViewController.h"@interface DetectTouchWindow : UIWindow@property (strong,nonatomic) NSTimer *idleTimer; //타이머@property (strong, nonatomic) UIWindow *window; @end .m #import "DetectTouchWindow.h" @implementation DetectTouchWindow@synthesize idleTimer; - (void)sendEvent:(UIEvent *)event { [super sendEvent:event]; // 타이머 재설정 횟수를 줄이기 위해 시작 터치 또는 종.. 2019. 1. 4.
최상위 viewController 클래스의 이름 가져오기 최상위 viewController 클래스의 이름 가져오기 //현재 띄워진 class 의 이름 UIViewController *curentViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; NSString *currentSelectedCViewController = NSStringFromClass([[((UINavigationController *)curentViewController) visibleViewController] class]); 2019. 1. 4.
ios 오토레이아웃 코드로 응용하기 ios 오토레이아웃 코드로 응용하기 .m #import @interface AutoLayoutSampleViewController : UIViewController @end.h #import "AutoLayoutSampleViewController.h" @interface AutoLayoutSampleViewController () @property (nonatomic,strong) UILabel *bigTitle; //암호 입력 @property (nonatomic,strong) UILabel *smallTitle; //암호를 입력해주세요. @property (nonatomic,strong) UITextField *textfield; //텍스트 필드 @property (strong, nonatomic).. 2019. 1. 4.
암호화 복호화 암호화 복호화 #import #import "RNDecryptor.h"#import "RNEncryptor.h" @interface ViewController : UIViewController{ NSString *secretKey; //salt}- (NSString *)getCryptorEncrypt:(NSString *)toEncryptString; //암호화 - (NSString *)getRNCryptorDecript:(NSString *)toDecriptDataString; //복호화 @end #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [s.. 2019. 1. 2.
Obejctive c 클래스 변수 & 배열을 json 변환 Obejctive c 클래스 변수 & 배열을 json 변환 #선언 CaptureMediaActivity.h //임시 경로 저장된 최종 배열 리턴+ (NSMutableArray * ) tempMediaFilePathArray; //배열에 스트링 경로 저장하기+ (void) setTempMediaFilePathToArray:(NSString *)urlString; CaptureMediaActivity.m //공용 배열 변수 ,내부사용할 정적변수 생성static NSMutableArray * _tempFileUrlArray; - (void)viewDidLoad { [super viewDidLoad]; //배열 초기화_tempFileUrlArray = [[NSMutableArray alloc]init]; } /.. 2019. 1. 2.
UIView 커스터마이징 & 오디오 비디오 사진 뷰어 uiview 커스터마이징 & 오디오 비디오 사진 뷰어 .h #import #import #import @interface MediaViewActivity : UIViewController @end .m #import "MediaViewActivity.h" @interface MediaViewActivity ()@property (strong, nonatomic) MPMoviePlayerController *moviePlayer;@property (strong, nonatomic) AVAudioPlayer *audioPlayer;@property (nonatomic, assign) BOOL isPlaying;@property(strong,nonatomic) NSTimer *TimeOfActiveUser;@.. 2018. 12. 28.
ios 저장 용량 계산 ios 저장 용량 계산 # pragma about Storage Method //전체 저장 용량-(uint64_t)getTotalDisk { uint64_t totalSpace = 0; NSError *error = nil; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error]; if (dictionary) { NSNumber *fileSystemSizeInBytes .. 2018. 12. 27.
ios 오디오 + 비디오 권한 체크 함수 ios 오디오 + 비디오 권한 체크 함수 .h #import #import @interface PermissionsManager : NSObject //음성녹음 권한체크-(void)checkMicrophonePermissionsWithBlock :(void(^)(BOOL granted))block; //카메라 권한 상태 체크-(void)checkCameraAuthorizationsStatusWithBlock :(void(^)(BOOL granted))block; @end .m #import "PermissionsManager.h" #import @implementation PermissionsManager //오디오 권한 체크 - (void)checkMicrophonePermissionsWithBlock.. 2018. 12. 20.
FileManager FileManager .h #import @interface FileManager : NSObject //임시파일 저장 URL-(NSURL*) tempFileURL; //삭제할 파일이 있는 URL-(void) removeFile:(NSURL *) outputFileURL; //복사할 문서가 있는 위치 URL 넣고 그곳으로 복사-(void)copyFileToDocuments:(NSURL *)fileURL; //카메라롤에 복사-(void)copyFileToCameraRoll:(NSURL *)fileURL; @end .m #import "FileManager.h" #import @implementation FileManager //현재 파일 위치 - (NSURL *)tempFileURL{ NSLog(@"Fil.. 2018. 12. 20.
audiosessionQueue play - 코어오디오 재생하기 audiosessionQueue play .h #import #import #import #import #import @interface CoreAudioPlayViewController : UIViewController enum { kNumberBuffers = 3, //오디오 버퍼는 3개 kNumberPackages = 10* 1000, //한번에 읽는 패키지 개수}; struct PlayerStat{ AudioStreamBasicDescription mDataFormat; //오디오 스트림의 광범위한 특성정의 AudioQueueRef mQueue; // 재생오디오큐 AudioQueueBufferRef mBuffers[kNumberBuffers]; //오디오 큐 버퍼 포인트의 리스트 AudioFile.. 2018. 12. 19.
ios audiosessionqueue 파일 재생 시간 구하는 두가지 방법 ios audiosessionqueue 파일 재생 시간 구하기 1. avfoundation api 이용 AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:url2 options:nil]; CMTime audioDuration = audioAsset.duration; float audioDurationSeconds = CMTimeGetSeconds(audioDuration); NSLog(@"파일 재생 시간 audioDurationSeconds : %f " ,audioDurationSeconds); 2.audiofilegetproperty 이용 //파일 전체 재생시간 구하기 Float64 outDataSize = 0; UInt32 thePropSize = size.. 2018. 12. 19.
coreAudio recording coreAudio recording .h #import #import #import #import #import //오디오 큐 서비스를 사용하는 클래스 정의 enum { kNumberBuffers = 3, //오디오 버퍼큐는 3개 kNumberPackages = 10* 1000,}; struct RecorderStat{ AudioStreamBasicDescription mDataFormat; //오디오 스트림의 광범위한 특성정의 AudioQueueRef mQueue; // 재생오디오큐 AudioQueueBufferRef mBuffers[kNumberBuffers]; //오디오 큐 버퍼 포인트의 리스트 AudioFileID mAudioFile; //오디오 파일 객체 UInt32 bufferByteSize;.. 2018. 12. 19.
AVFoundation을 이용한 녹음 재생하기 AVFoundation을 이용한 녹음 재생하기 .h #import @interface ViewController : UIViewController //녹음버튼 + 멈춤@property (strong, nonatomic) IBOutlet UIButton *recordPauseButton; //정지 버튼@property (strong, nonatomic) IBOutlet UIButton *stopButton; //플레이 버튼@property (strong, nonatomic) IBOutlet UIButton *playButton; //녹음 버튼 + 멈춤버튼 눌렀을때- (IBAction)recordPauseTapped:(id)sender; //정지버튼 눌렀을때- (IBAction)stopTapped:(id)s.. 2018. 12. 17.
이미지 자르기 + 제스쳐 + transparentview 예제 이미지 자르기 + 제스쳐 + transparentview 예제 #import #import "ImageViewerViewController.h" @interface ViewController : UIViewController - (IBAction)captureBtnAction:(id)sender; @end #import "ViewController.h" @interface ViewController (){ IBOutlet UIImageView *myImage; UIView *testVw; //뷰파인더 CGPoint prevPoint; //옮기기 전 위치 point UIView *resizeVw; //빨간색 UIView *resizeVw2;// 파란색 UIBezierPath *backPath; //검은색 .. 2018. 12. 14.
objective c block에 대한 이해 objective c block에 대한 이해 block 정의 변수나 데이터 구조안에 담을 수 있다. 파라미터로 전달 할 수 있다. 반환값(return value)으로 사용할 수 있다. 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다. 재사용해야하는 경우에는 클래스 기반의 Delegate을 사용고, 한번 사용할 로직이라면 보통 블럭을 사용 block 은 런타임에 생성되는 다이나믹 함수(Dynamic Function) 이다. 병렬처리나 비동기처리(Asyncronous Processing), 혹은 '함수형언어(Functional Language)'의 특징과 비슷하다. 예제 #import "SampleClass.h"#import int main(int argc, const char * argv[]) { @.. 2018. 12. 10.
UIImagePickerController를 이용한 비디오 UIImagePickerController를 이용한 비디오 뷰컨트롤러 #import #import "ImagePickerController.h"#import "ListTableViewController.h" @interface ViewController : UIViewController @property(nonatomic,strong) ImagePickerController *imagePickerController; - (IBAction)cameraBtn:(id)sender; - (IBAction)librayBtn:(id)sender; @end #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle.. 2018. 12. 7.
ios filemanager 관련 모듈 - 저장 삭제 이동 ios filemanager 관련 모듈 #import @interface IDFileManager : NSObject - (NSURL *) tempFileURL;- (void) removeFile:(NSURL *)outputFileURL;- (void) copyFileToDocuments:(NSURL *)fileURL;- (void) copyFileToCameraRoll:(NSURL *)fileURL; @end #import "IDFileManager.h"#import @implementation IDFileManager //현재 파일 위치- (NSURL *)tempFileURL{ NSString *path = nil; NSFileManager *fm = [NSFileManager defaultManag.. 2018. 12. 7.
ios 사이드 메뉴 ios 사이드 메뉴 MMDrawerController-master 라이브러리와 stroyboard 를 이용한 사이드 메뉴 샘플 uiview 를이용한 사이드 메뉴 샘플 uiview 모듈을 이용한 사이드 메뉴 샘플 2018. 12. 5.
ios objective c sha256 해쉬 sha 512 함수 ios objective c sha256 해쉬 sha 512 함수 #import -(NSString*) sha256:(NSString *)clear{ const char *s=[clear cStringUsingEncoding:NSASCIIStringEncoding]; NSData *keyData=[NSData dataWithBytes:s length:strlen(s)]; uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0}; CC_SHA256(keyData.bytes, keyData.length, digest); NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH]; NSString *hash=[out .. 2018. 12. 5.
ios 카메라를 만드는 두가지 방법 - 설명 ios 카메라를 만드는 두가지 방법 1 UIImagePickerController 사용 -Foundation 프레임워크의 UIImagePickerController 클래스를 사용하면된다. 장점: 구현이 쉽다. 단점: 커스터마이징이 어렵다. AVCaptureDevice 다양한 커스터마이징 가능 AVCaptureSession 카메라를 시작을 선언해주는 역할을 한다. 일반적으로 별도의 카메라 큐를 만들어서 세션을 시작한다. AVCaptureVideoPreviewLayer 카메라가 향하는 곳을 영상으로 볼 수 있다. PreViewLayer는 영상이 나오는 화면을 가르킨다. PreViewLayer는 AVCaptureDevice + AVCaptureSession + Input + Output을 갖춰야 한다. AVC.. 2018. 12. 4.
ios 카메라를 만드는 두가지 방법 2 첫번째 방법 //// ViewController.h// CarmeraExam1// // #import #import @interface ViewController : UIViewController //프레임을 강제로 연속 캡쳐@property (weak, nonatomic) IBOutlet UIView *frameforcapture; //순간적으로 찍은 이미지 보이게@property (weak, nonatomic) IBOutlet UIImageView *imageV; - (IBAction)takePhoto:(id)sender; @end //// ViewController.m// CarmeraExam1// // #import "ViewController.h" @interface ViewController .. 2018. 12. 3.