Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Screen Orientation σε κινητο HTC Diamond

Îåêßíçóå áðü ôï ìÝëïò geoneo. Τελευταία δημοσίευση από το μέλος geoneo στις 22-12-2008, 01:51. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-12-2008, 10:55 47044

    Screen Orientation σε κινητο HTC Diamond

    Καλημέρα

    Ξέρει κανείς πώς μπορώ να πάρω την θέση που εχει ένα κινητό ( HTC Diamond) ?

    με ενδιαφέρει να ξέρω άν είναι όρθιο ή πλαγιαστό μόνο.

    έχω δοκιμάσει χωρίς επιτυχία νά πάρω τις τιμές απο

    1. SystemState.DisplayRotation 

    2. SystemSettings.ScreenOrientation

    όταν γράφω την εφαρμογή σε Visual studio 2008 και την τρέχω σε emulator...

    (Χρησιμοποιώ Windows Mobile profesionar 6 Emulator) , φαίνεται να παίζει σωστά και

    καθώς περιστρέφω το screen μπορώ να παίρνω απο το SystemState.DisplayRotation 

    ή απο το SystemSettings.ScreenOrientation τις σωστές τιμές

    όμως όταν κάνω deploy στο HTC οι τιμές δεν αλάζουν....

    Ευχαριστώ

    Νικολιδάκης Γιώργος

     

     

     

     

     

     

     

  •  21-12-2008, 18:43 47051 σε απάντηση της 47044

    Απ: Screen Orientation σε κινητο HTC Diamond

    Γεια σου Γιώργο,
    σε ένα module έχω τον παρακάτω κώδικα
    και στο resize της φόρμας καλώ το MyForm_Resize:AddHandler Resize, AddressOf MyForm_Resize

    Το έχω δοκιμάσει σε HTC Touch Pro και παίζει.
    Καλύ τύχη.

    #Region "Handle Screen Orientation"

    ' Add a class member variable to

    ' store that the orientation has changed.

    Dim OrientationChanged As Boolean = False

    Public Sub MyForm_Resize(ByVal sender As Object, ByVal e As EventArgs)

    If (SystemSettings.ScreenOrientation <> ScreenOrientation.Angle0) Then

    OrientationChanged = True

    End If

    End Sub

    Public Function CheckOrientation() As Boolean

    ' orientationChanged is set to true in resize if it is

    ' detected that the orientation of the device has changed.

    If OrientationChanged Then

    ' Attempt to change the display back to portrait mode.

    Try

    SystemSettings.ScreenOrientation = ScreenOrientation.Angle0

    ' Now that the orientation is back to portrait mode

    ' Do not attempt to change it again.

    OrientationChanged = False

    Catch ex As Exception

    MsgBox("Failed to change the display mode." & vbCrLf & ex.Message, MsgBoxStyle.Critical)

    Return False

    End Try

    End If

    Return True

    End Function

    ' Use the CheckOrientation() method before rendering occurs.

    ' All rendering for each frame occurs here.

    Public Sub Render()

    ' If the device is not oriented properly,

    ' some display drivers may not work.

    If Not CheckOrientation() Then

    Return

    End If

    ' Rendering code omitted here.

    End Sub

    #End Region

  •  21-12-2008, 21:18 47052 σε απάντηση της 47051

    Απ: Screen Orientation σε κινητο HTC Diamond

    Καλησπέρα

    Δεν ξέρω μήπως δεν εξήγησα καλά τί είναι αυτό που ψάχνω.

    θέλω να διαβάζω τη θέση του κινητού όταν είναι όρθιο portrait ή οριζόντιο landsacape χωρίς να χρειαστεί να

    κάνω κάποια άλη ενέργεια απο το να αλάξω την θέση του.

    Μηπως στο HTC pro η ρουτίνα MyForm_Resize ενεργοποιείται όταν τραβάς το πληκτρολόγιο έξω (κάτι που εγώ δέν έχω)

    και όχι όταν απλά αλάζεις θέση στο κινητό (όπως θέλω εγώ).

    Σε κάθε περίπτωση ευχαριστώ για την απάντηση  

    Γιώργος Νικολιδάκης

  •  21-12-2008, 21:39 47054 σε απάντηση της 47044

    Απ: Screen Orientation σε κινητο HTC Diamond

    Κάνοντας λίγο googling έπεσα πάνω σ' αυτό. Νομίζω ότι το GSen κάνει αυτό που ζητάς. Δεν έχεις παρά ν' ακολουθήσεις τα links.

     

    Update:

    Ίσως θα έπρεπε να επικοινωνήσεις και με την HTC για μάθεις λεπτομέρειες που αφορούν στο g-sensor API.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  21-12-2008, 22:36 47058 σε απάντηση της 47054

    Απ: Screen Orientation σε κινητο HTC Diamond

    Παιδιά, προσέξτε λίγο τί ζητάει ο GeoNeo. Δεν ζητάει πως να κάνει την εφαρμογή του να αλλάζει μέγεθος όταν περιστρέφεται (εκεί παίζει το GSen, αν η εφαρμογή δεν καταλαβαίνει ήδη από orientation), ούτε ρωτάει πως να αλλάξει το μέγεθος μίας φόρμας (εκεί παίζει το Form_Resize). Εξάλλου μας είπε ήδη ότι ΔΕΝ του παίζει η ScreenOrientation όπως θα έπρεπε. O GeoNeo μπορεί να θέλει να φτιάξει μία εφαρμογή η οποία δεν χρειάζεται το GSen για να δουλέψει. Μπορεί να ζητάει το orientation για να δείξει τα controls με διαφορετικό layout στην οθόνη, ανάλογα με το orientation. Και στις δύο περιπτώσεις χρειάζεται την ScreenOrientation και δεν τον βόηθάει ούτε το GSen ούτε η Form_Resize, η οποία εξάλλου καλείται αφού γίνει το layout.

    Όσο για το πρόβλημα που αντιμετωπίζει ο GeoNeo, δεν το έχω ξανασυναντήσει, ενώ έχω βρει προγράμματα όπως αυτό τα οποία χρησιμοποιούν την SystemSettings.ScreenOrientation και για να βρουν αλλά και για να αλλάξουν το orientation. Μάλλον θα πρέπει να μας δώσει περισσότερα στοιχεία για το τί συμβαίνει.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-12-2008, 23:10 47059 σε απάντηση της 47052

    Απ: Screen Orientation σε κινητο HTC Diamond

    Για να καταλάβεις πότε αλλάζει orientation το κινητό, χρειάζεται να παίξεις με το G sensor. To .ΝΕΤ Compact Framework δεν έχει out-of-the-box υποστήριξη, ωστόσο ένα managed API μπορείς να βρεις εδώ: http://www.koushikdutta.com/2008/08/htc-touch-diamond-stylus-sensor-sdk.html

     


    Vir prudens non contra ventum mingit
  •  21-12-2008, 23:40 47062 σε απάντηση της 47058

    Απ: Screen Orientation σε κινητο HTC Diamond

    Καλησπέρα Παναγιώτη

    Είναι ακριβώς αυτό που έγραψες

    θέλω να καταλαβαίνω απο την εφαρμογή πώς είναι τοποθετημμένο το κινητό έτσι ώστε να δίνω τιμές στην

    SystemSettings.ScreenOrientation με

    ScreenOrientation.Angle0 είτε ScreenOrientation.Angle90

    και στην συνέχεια θέλω να εφαρμόζω ένα διαφορετικό layout ανάλογα με τo ScreenOrientation της οθόνης.

    όσο για το πρόβλημα.. δεν νομίζω ότι είναι πρόβλημα απλά εγώ δεν είχα καταλαβει πώς δουλέυει η

    ScreenOrientation ....

    Συνοψίζοντας ψάχνω να βρώ τον τρόπο να δημιουργείται ένα event όταν αλάζει η θέση του κινητού (όρθιο ή πλαγιαστό) και στην συνέχεια

    μέσα απο τον event Handler να διαβάζω και την θέση του .

    Γιώργος Νικολιδάκης

     

  •  21-12-2008, 23:44 47063 σε απάντηση της 47062

    Απ: Screen Orientation σε κινητο HTC Diamond

    Κοίτα το link που σου έδωσα. Για να μην βασίζομαι σε όσα γράφει ο τύπος, έγραψα κι εγώ ένα εντελώς χαζό console application το οποίο περιστρέφει την οθόνη, και δούλεψε. Υ.Γ. Κι εγώ Diamond έχω

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.WindowsCE.Forms;

    namespace MyRotator
    {
    class Program
    {
       static void Main(string[] args)
       {
          if (SystemSettings.ScreenOrientation == ScreenOrientation.Angle0)
             SystemSettings.ScreenOrientation = ScreenOrientation.Angle90;
          else if (SystemSettings.ScreenOrientation == ScreenOrientation.Angle90)
             SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;
       }
    }
    }

    Η μόνη ίσως αλλαγή που χρειάζεται είνι να αλλάξω το 90 σε 270 γιατί βρέθηκα με τα κουμπιά στα αριστερά και δεν μου αρέσει αυτό. Compile και Deployment έγιναν από το VS 2008 και το Project ήταν Console Project για Windows Mobile 5.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-12-2008, 23:54 47065 σε απάντηση της 47063

    Απ: Screen Orientation σε κινητο HTC Diamond

    To θέμα είναι αν θες ο έλεγχος να γίνεται μόνο μία φορά (όταν ξεκινά η εφαρμογή) ή οποτεδήποτε ο χρήστης περιστρέφει το κινητό την ώρα που τρέχει η εφαρμογή. Στην δεύτερη περίπτωση χρειάζεται το G sensor API.
    Vir prudens non contra ventum mingit
  •  22-12-2008, 00:57 47068 σε απάντηση της 47062

    Απ: Screen Orientation σε κινητο HTC Diamond

    Κι εγώ υποστηρίζω ότι πρέπει κάνεις χρήση του g sensor API. Αν πάλι δεν θες, μια χονδροειδέστατη υλοποίηση είναι να χρησιμοποιήσεις ένα timer control από το tick event του οποίου θα παίρνεις το orientation ανά τακτά χρονικά διαστήματα, δημιουργώντας την ψευδαίσθηση ότι η συσκευή αντιδρά κατά την περιστροφή της. Δεν το έχω δοκιμάσει, αλλά ίσως δουλέψει.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  22-12-2008, 01:51 47076 σε απάντηση της 47068

    Απ: Screen Orientation σε κινητο HTC Diamond

    Νομίζω ο Φίλος KelMan έχει δίκιο

    ότι και να κάνεις το screen orientation δεν θα αλάξει λόγω της θέσης του κινητού, φαίνεται οτι δεν υπάρχει τρόπος να δημιουργήσεις ένα event και να διαβάσεις

    την θέση του κινητού με το .net out of the box.

    Aκόμη και ένα timer control με tick event δεν κάνει κάποια διαφορά αφού δεν μπορείς να διαβάσεις τον G sensor.

    Φίλε KelMan δοκίμασα G sensor και φαίνεται να παίζει απλά είμαι δισταχτικός να χρησιμοποιήσω κάτι που κανείς δεν μου εγγυάται την σωστή λειτουργία του

    Φαίνεται όμως ότι δεν έχω άλλη λύση.

    Πάντως έχει όλες τις λειτουργίες και τα events που χρειάζομαι και πολλά ακόμη όπως το light sense  , pen sense in out ..

    Ευχαριστώ πολύ

    Γιώργος Νικολιδάκης

     

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems