Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

accelerometer


  • Zaloguj się, aby dodać odpowiedź
14 odpowiedzi w tym temacie

#1 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 16 maja 2010 - 17:18

Witam
Mam 4 buttony:

Button nr1
Button nr2
Button nr3
Button nr4

I np: przycisnolem button nr 1 i teraz po przesunieciu iPhone'a do gory gra piosenka nr1, ale znudzila mi sie ona :) i teraz wybieram button nr 2(z inna piosenka) i znow przesuwam iphone'a do gory i gra piosenka nr 2 :) i tak dalej... jak to uczynic ?? zapewne potrzebuje:
NSString *path = [[NSBundle mainBundle] pathForResource:@"piosenkanr1" ofType:@"mp3"];
		AVAudioPlayer* piosenkanr1=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];	
		gitara.delegate = self;
		gitara.volume = 1.0;
		gitara.numberOfLoops = 1;
		[piosenkanr1 play];
i
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
	
	if (fabsf(acceleration.x) > 2.0 {
	
		
	}
Tylko jak?

#2 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 16 maja 2010 - 18:30

iPhone nie będzie wiedział, że przesunąłeś go do góry.
Chyba, że nie zrozumiałem o co tobie chodzi.

Możesz sobie np. ustalić, że jak klikniesz buttona to muzyczka zagra dopiero jak obrócisz iphona.

if (fabsf(acceleration.x) > 2.0


To tak nawiasem nigdy nie będzie spełnione. Wartości x,y,z są od -1 do 1. Pobaw się logami i obracając iphona zobacz jak się te wartości zmieniają.

#3 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 16 maja 2010 - 20:43

Zle to ujolem "przesune do gory" nie chodzilo mi o przesuwanie na plaszczyznie :) co do uwagi ze wartosci od -1 do 1 bede pamietac :) tylko teraz jak to zrobic? by to jaka muzyka gra zalezalo od tego ktory button wybiore?

#4 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 16 maja 2010 - 22:11

Ale tak dokładnie to do czego ma służyć ten accelerometer?

#5 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 17 maja 2010 - 08:36

poprostu chce by po lekkim przechyleniu wydawal dzwiek wczesniej wybrany za pomaca buttona

#6 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 17 maja 2010 - 10:40

No to chyba najprostszy sposób by był chyba taki: - Na starcie programu wczytujesz 4 utwory. - Robisz sobie zmienną całkowitą odpowiedzialną za zaznaczony button np.a i rzeczywistą odpowiedzialną za obecne wychylenie np.b. Wtedy przy tapnięciu na button (pod warunkiem, że iphone nie jest wychylony), zmienna a zmienia wartość od 0 do 3 w zależności od tapniętego buttona. I w metodzie accelerometru śledzisz tylko czy iphone uległ wychyleniu. Jeżeli tak to odpala się piosenka w zależności od parametru a. Ale musisz właśnie tylko wtedy, gdy uległ wychyleniu, a nie gdy jest wychylony bo wtedy by się odpalała bez przerwy.

#7 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 17 maja 2010 - 12:23

oooo dokladnie o to mi chodzi :) czy mógłbyś mi pomoc z kodem??

#8 kugi

kugi
  • 315 postów
  • SkądWilanów, Warszawa, Poland, Poland

Napisano 17 maja 2010 - 12:35

wyglada, jakby ktos probowal zmontowac shotgun'a ;]

#9 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 18 maja 2010 - 10:01

Spróbuje coś ci niedługo skleić ale nic nie obiecuje bo mam jeszcze matury ;p

#10 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 18 maja 2010 - 12:04

ooo maturzysta :) ja wlasnie dzis pisalem informatyke :)

#11 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 25 maja 2010 - 10:26

No znalazłem chwilkę i coś napisałem.

Link

Tylko to jest taka bardzo na szybko i pewnie jakiś wyjątków nie dodałem.
Wybierasz buttona i jak przechylisz iPhona do przodu to zacznie grać a jak wrócisz do pionu to będzie pauza.

#12 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 25 maja 2010 - 11:32

dzieki wielki :)

#13 Lestek

Lestek
  • 880 postów

Napisano 31 maja 2010 - 07:20

Ponieważ rotacja urządzenia działa dzięki akcelerometrowi postanowiłem się podpiąć. Przy trybie landscape UIActionSheet wyskakuje mi z boku, wie ktoś jak sobie z tym poradzić? Ewentualnie jak wyłączyć zmianę orientacji przy niektórych widokach?

#14 mhroku

mhroku
  • 132 postów
  • SkądPoznań / Koziegłowy

Napisano 31 maja 2010 - 19:37

Były malutkie błędy.
Poprawiona wersja TUTAJ

#15 Zuki

Zuki
  • 434 postów
  • SkądPrzeworsk

Napisano 03 czerwca 2010 - 20:25

problem

hmm mam już kod działający prawie dokładnie tak jak chce... prawie bo... mimo iż jest wpisane : song[i].numberOfLoops = 1;

Utwór mimo to odtwarzany jest na okrągło... ktoś ma jakiś pomysł? oto kod:
#import "AccelerometerViewController.h"

@implementation AccelerometerViewController

@synthesize button1,button2,button3, button4;

- (IBAction) changeSong1: (id) sender{
	
	[song[0] stop];
	[song[2] stop];
	[song[3] stop];
	[song[4] stop];
		currentSong = 1;
		[self setText:currentSong];
	
}

- (IBAction) changeSong2: (id) sender{
	[song[0] stop];
	[song[1] stop];
	[song[3] stop];
	[song[4] stop];
		currentSong = 2;
		[self setText:currentSong];

}

- (IBAction) changeSong3: (id) sender{
	[song[0] stop];
	[song[2] stop];
	[song[1] stop];
	[song[4] stop];
		currentSong = 3;
		[self setText:currentSong];

}

- (IBAction) changeSong4: (id) sender{
	
	[song[0] stop];
	[song[2] stop];
	[song[3] stop];
	[song[1] stop];
		currentSong = 4;
		[self setText:currentSong];
}

- (void)setText:(NSInteger) n{
	
	switch (n) {
		case 1:
		{
			
			[button1 setTitle:@"Song 1 (current)" forState:UIControlStateNormal];
			[button2 setTitle:@"Song 2" forState:UIControlStateNormal];
			[button3 setTitle:@"Song 3" forState:UIControlStateNormal];
			[button4 setTitle:@"Song 4" forState:UIControlStateNormal];

		}
		break;
		case 2:
		{
			[button1 setTitle:@"Song 1" forState:UIControlStateNormal];
			[button2 setTitle:@"Song 2 (current)" forState:UIControlStateNormal];
			[button3 setTitle:@"Song 3" forState:UIControlStateNormal];
			[button4 setTitle:@"Song 4" forState:UIControlStateNormal];	
		}
		break;
		case 3:
		{
			[button1 setTitle:@"Song 1" forState:UIControlStateNormal];
			[button2 setTitle:@"Song 2" forState:UIControlStateNormal];
			[button3 setTitle:@"Song 3 (current)" forState:UIControlStateNormal];
			[button4 setTitle:@"Song 4" forState:UIControlStateNormal];	
		}
		break;
		case 4:
		{
			[button1 setTitle:@"Song 1" forState:UIControlStateNormal];
			[button2 setTitle:@"Song 2" forState:UIControlStateNormal];
			[button3 setTitle:@"Song 3" forState:UIControlStateNormal];
			[button4 setTitle:@"Song 4 (current)" forState:UIControlStateNormal];	
		}
	
	}
	
}

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *) acceleration {
	
	if (angle == 0) tempAngle = [acceleration y];
	else tempAngle = angle;
	angle = [acceleration y];
		
	if ( (angle > 0) && (tempAngle <= 0.5) )
	{
		
		
		[song[currentSong] play];
		NSLog(@"song %i play", currentSong);
	}
	else if ( (angle < -0) && (tempAngle >= -0.45) )
	{
		[song[0] pause];
		[song[1] pause];
		[song[2] pause];
		[song[3] pause];
		[song[4] pause];
		NSLog(@"pause");
	}
	
	//NSLog(@"%f",angle);

	
}

- (void)viewDidLoad {
	
	[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0/30.0f)];
	[[UIAccelerometer sharedAccelerometer] setDelegate:self];

	NSURL *url[5];
	
	NSError *error;
	
	for (int i = 0 ; i < 5; i++) 
	{
		url[i] = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/song%i.caf", [[NSBundle mainBundle] resourcePath] , i ]];
		
		song[i] = [[AVAudioPlayer alloc] initWithContentsOfURL:url[i] error:&error];
		song[i].numberOfLoops = 1;
		
		if (song[i] == nil) NSLog(@"lol");
	}
	[song[0] stop];
	[song[2] stop];
	[song[3] stop];
	[song[4] stop];
	[song[1] stop];
	
}

- (void)didReceiveMemoryWarning {
	  [super didReceiveMemoryWarning];
	
	}

- (void)viewDidUnload {

}


- (void)dealloc {
	[song[0] release];
	[song[1] release];
	[song[2] release];
	[song[3] release];
	[button1 release];
	[button2 release];
	[button3 release];
	[button4 release];
    [super dealloc];
}

@end





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych