কিভাবে অ্যান্ড্রয়েড এয়ারে অভিযোজন পরিবর্তন নিষ্ক্রিয় করবেন

আমি এমন একটি গেম নিয়ে একটি সমস্যা করেছি যা আমি এয়ার অ্যানড্রইডের জন্য তৈরি করেছি। আমি ফোনটি লক না হওয়া পর্যন্ত অ্যাপ্লিকেশনটি নিজেই সঠিকভাবে (আড়াআড়ি স্থিত থাকি) আপেক্ষিকভাবে আমি পরীক্ষা করছি এবং তারপরে এটি আনলক করছি। ফোনটি আনলক হলে, অ্যাপ্লিকেশনটি তখন প্রতিকৃতি মোডে থাকবে (এটি সর্বদা আড়াআড়ি হতে হবে)।

বর্ণনাকারী এক্সএমএল ফাইলের মধ্যে আমি সত্য, দৃষ্টিপাত অনুপাত এবং স্বতন্ত্র প্রাচীর থেকে পূর্ণ প্রাচীর সেট করেছি তবে এটি লক হওয়া এবং আনলক হওয়ার সময় অ্যাপটিকে প্রভাবিত করে না বলে মনে হয় (এটি অন্য কোন দৃশ্যকল্পতে পুরোপুরি কাজ করে)। এটি আবার প্রতিকৃতি হয়ে যাবে এবং আনলক অবস্থায় আড়াআড়ি দিকে সরাবে না (তাই অটো অ্যান্টি-ভিত্তিক মিথ্যা অবশ্যই স্পষ্টভাবে চলছে না)।

এই সমস্যাটি কেবল তখনই ট্রিগার হয়ে যায় যখন আপনি গেমটি চালাচ্ছেন এবং ফোনটি আনলক করুন এবং আনলক করুন। উদাহরণস্বরূপ, আপনি হোম বোতামটি টিপুন যাতে অ্যাপ্লিকেশনটি ফোকাসে না থাকে, তারপরে লক এবং আনলক করুন এবং বিরতিপূর্ণ খেলাটিতে ফিরে যান এটি এখনও আড়াআড়ি অবস্থায় থাকবে।

সম্পাদনা করুন: আমি শুধু একটি গুরুত্বপূর্ণ আবিষ্কার করেছি! মনে হচ্ছে এটি আপনার ফোনে কী ধরণের লক স্ক্রীন ব্যবহার করে সেটির উপর নির্ভরশীল। আমি অ্যান্ড্রয়েড 4 গ্যালাক্সি এস 3 ব্যবহার করি। আমি একটি লক পর্দা ব্যবহার না করার জন্য এটি সুইচ এবং আমি আনলক যখন অ্যাপ্লিকেশন আড়াআড়ি স্থিত! এই অগ্রগতি হয়। দুর্ভাগ্যবশত আমার বন্ধু যিনি একটি ভিন্ন অ্যান্ড্রয়েড 4.0 ফোন করেছেন সেটি একই সমস্যাটি প্রতিবেদন করেছে তাই এটি আমার ফোন নয়।

0

8 উত্তর

আমি একই সমস্যা আছে। আমি কয়েক বিভিন্ন ডিভাইসে পরীক্ষা করেছি। লক স্ক্রীনে একটি পাসওয়ার্ড প্রয়োজন হলে তাদের অধিকাংশই ক্র্যাশ বা চরম ল্যাগ লাভ করে। ডিভাইসটি ঘুমাতে যাওয়ার পরে আমার সমাধান স্বয়ংক্রিয়-অভিযোজন করার অনুমতি দেয় এবং ডিভাইসটিকে ল্যান্ডস্কেপে একবার একবার অক্ষম করে। ডিভাইসটি প্রতিকৃতিতে থাকা অবস্থায় আমি আমার সমস্ত সামগ্রী লুকিয়ে রাখি। FYI আমি এখনও এই কোড সব পরীক্ষা করা হয় না, তাই এটা কিছু অনুপস্থিত হতে পারে।

//Before the device goes to sleep, enable auto-orientation
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);
function handleDeactivate(e:Event):void
{
    stage.autoOrients = true;

    //listen for the device to re-activate
    e.currentTarget.addEventListener(Event.ACTIVATE, handleActivate, false, 0, true);
}

//Once the device is re-activated, check the orientation.
function handleActivate(e:Event):void
{
    e.currentTarget.removeEventListener(Event.ACTIVATE, handleActivate, false, 0, true);

    //if the orientation is portait, just listen for an orientation change
    if (stage.stageHeight > stage.stageWidth)
    {
        //It makes sense that you would just use stage.setAspectRatio(StageAspectRatio.LANDSCAPE) here,
        //however in my experience I've found that setting the aspect ratio here seems to cause an infinite loop of the device attempting to reset the orientation.
        //Instead, I will wait for the user to change orientation, and then lock it in landscape
        stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);
    }
    else
    {
        disableAutoOrientation();
    }
}

//Check if the new orientation is landscape. If so, disable orientation changes.
function onOrientationChange():void
{
    if (stage.stageWidth > stage.stageHeight)
    {
        stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);
        disableAutoOrientation();
    }
}

//disable the auto-orientation feature
function disableAutoOrientation():void
{
    stage.autoOrients = false;
}
2
যোগ

অ্যাপ্লিকেশন বর্ণনাকারী xml এই রাখুন

portrait
false
2
যোগ
শুধু চেহারা Ratio ট্যাগ ভিতরে আড়াআড়ি সঙ্গে প্রতিকৃতি প্রতিস্থাপন।
যোগ লেখক Adrian Pirvulescu, উৎস
আপনি আপনার অ্যাপ্লিকেশন বর্ণনাকারী এবং কিছু কোড শেয়ার করতে পারেন?
যোগ লেখক Adrian Pirvulescu, উৎস
আমি চেষ্টা করেছি (এবং আমি অনুমান, ব্যর্থ) আমার প্রশ্নের ব্যাখ্যা ছিল যে আমি ইতিমধ্যে এটি চেষ্টা করেছি, যদিও এটি আড়াআড়ি হতে হবে এবং প্রতিকৃতি না। যদিও চিন্তা করার জন্য ধন্যবাদ।
যোগ লেখক Xaduurv, উৎস
আবার, আমি দৃষ্টিভঙ্গি RATIO ট্যাগ মধ্যে LANDSCAPE আছে। পোর্ট্রেট দৃষ্টিভঙ্গিতে কখনও হয়েছে না RATIO ট্যাগ।
যোগ লেখক Xaduurv, উৎস

আমি একই সমস্যা নিয়ে মাথা ঠাট্টা করছি, এখানে আমার ইনফোডাম সাপেক্ষে।

যতদূর আমি দেখতে পাচ্ছি, লক স্ক্রীনটি মূল পর্দায় একটি ওভারলে, তাই লক স্ক্রীন দেখানোর জন্য, আপনার অ্যাপ্লিকেশন সহ (এটি 'সক্রিয়' ইভেন্ট পায় এবং চলমান শুরু হয়) প্রদর্শনটি সক্রিয় হয়। ডিভাইসটি লক স্ক্রীনে পোর্ট্রেট অভিযোজনে ডিফল্ট হয়ে থাকে (ফোনগুলি বেশিরভাগই করে, ট্যাবলেটগুলি বেশিরভাগই না থাকে) আপনার অ্যাপ্লিকেশনটি সড়কটির জন্য এবং তার পছন্দগুলি এবং AIR ম্যানিফেস্টের ইচ্ছার সাথে সঙ্গতিপূর্ণ হয়।

ফলস্বরূপ, যখন আপনার অ্যাপ্লিকেশন অবশেষে সম্মুখভাগে পায় (ব্যবহারকারী স্ক্রীনটি আনলক করে) এটি প্রতিকৃতি ভিত্তিক। আপনি সক্রিয় ইভেন্ট recieve যখন workaround ম্যানুয়ালি অভিযোজন নির্ধারণ করা হয়। ICS- এ একটি যোগ করা কুইক আছে - আনলক করার পরে সিস্টেম বিজ্ঞপ্তি বারটি আবার প্রদর্শিত হবে (আর কোন পূর্ণস্ক্রীন নেই), এবং পূর্ণ পর্দায় পুনরায় সেটিং স্তরটির কোনো প্রভাব নেই। এবং যে পর্যন্ত আমি পেতে পরিচালিত। আপনি একটি সমাধান খুঁজে যদি একটি নোটিশ প্রশংসা করবে।

একটি সম্পর্কিত সমস্যা হল যে যখন লক স্ক্রীনটি প্রদর্শিত হয়, তখন আপনার খেলাটি নীচে চালানো শুরু করে, যা খারাপ পরিস্থিতি, উদাহরণস্বরূপ, এটি একটি অ্যাকশন গেম এবং আপনি যে কোনও মুহূর্তের মধ্যস্থলে থামাতে চান যার জন্য অবিলম্বে ইনপুট দরকার (যেমন, খেলার যে কোন জায়গায় :-))। এটি সমাধান করার জন্য ভালোবাসি

0
যোগ
ধন্যবাদ jpop! আপনি আমার চেয়ে ভাল আমার সমস্যা articulated বলে মনে হচ্ছে। যে অন্য লোক এটা পেতে বলে মনে হচ্ছে না। দুর্ভাগ্যবশত আমি এই উপর আপনি আর কোন অর্জিত না। আমি সাফল্যের পরে দৃষ্টিভঙ্গি অনুপাত, পর্দা আকার, পূর্ণ পর্দা, ইত্যাদি fracking ছাড়া এই জিনিস পরিবর্তন ম্যানুয়ালি চেষ্টা করেছি। আমি মনে করি এটি একটি গুগল সমস্যা, যার ক্ষেত্রে আমরা fracked করছি। আমি প্ল্যাটফর্মের আমার পছন্দকে সন্দেহ করতে শুরু করছি ... ঐক্য কেউ?
যোগ লেখক Xaduurv, উৎস

লক্সস্ক্রিন থেকে পুনরায় শুরু হওয়ার পরেও আমি একইরকম সময়ের জন্য একইরকম স্থির প্রতিকৃতির আচরণের জন্য একই সমস্যা ছিলাম আমি এমন কিছু ব্যবহার করি যা কাজ করে বলে মনে হচ্ছে:

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange, false, 0, true);

private function onOrientationChange():void
{
    if (stage.stageWidth > stage.stageHeight)
    {
        stage.setAspectRatio(StageAspectRatio.PORTRAIT);
    }
    else
    {
        stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
    }
}

যদিও আমি নিশ্চিত নই যে কোন ডিভাইসটি যদি স্টেজ উইডটিকে দীর্ঘতর দিক এবং পর্যায়ে উচ্চতর দিকের মতো পর্যায়ে দেখায় তবে কি হবে তা হ'ল সমস্ত ডিভাইসগুলি অভিযোজনগুলির প্রতিবেদন করে যা আমরা আশা করি

0
যোগ
প্রকৃতপক্ষে (!!) আমি এটি ব্যবহার করার জন্য একটি নির্দিষ্ট অভিযোজন করার জন্য, আমি খুব বিভ্রান্ত ছিলাম কিন্তু এখন এটি সর্বদা পোর্ট্রেট পর্যায়ে। অ্যাডভেন্টলাস্টার (ইভেন্ট। অ্যাক্টিভেট, অন অ্যাক্টিভেট, মিথ্যা, 0, সত্য); ব্যক্তিগত ফাংশন অন অ্যাক্টিভেট (ই: ইভেন্ট): অকার্যকর {stage.setAspectRatio (StageApectpectRatio.landSCAPE); }
যোগ লেখক bikutaa, উৎস

আমি ঠিক একই সমস্যা করছি .. বিন্দুতে আমি সিদ্ধান্ত নিলাম যে আমি মুষ্টি দিয়ে রোল করতে এবং আমার খেলাটিকে তরল লেআউটে পুনর্নির্মাণ করি এবং সবকিছু পুনঃনির্ধারণ এবং আকার পরিবর্তন করে। সামগ্রিকভাবে, এটি কাজ করে, কিন্তু আমি আড়াআড়ি থাকতে পছন্দ করে। আমি এটি একটি গুগল জিনিস মনে করি না, আমি মনে করি এটি একটি ফ্ল্যাশ CS6 সমস্যা। CS5.5 এ প্রকাশ করার সময় এই বাগটি ঘটেনি, তবে আমি CS6 পেয়েছিলাম কারণ আমি আমার খেলাটিতে AIR সংহত করতে পারতাম। আমি নিশ্চিত না কেন, কিন্তু যে আমার পর্যবেক্ষণ।

0
যোগ

প্রায় mucking একটি গুচ্ছ পরে, আমি একটি সহজ সমাধান পাওয়া যায় যা আমার ডিভাইসে নির্ভরযোগ্যভাবে কাজ করে। মূলত শুধু অ্যাপ্লিকেশনটি সক্রিয় করার জন্য শুনুন এবং তারপরে আপনি যা চান তা স্থির করুন।

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactivate);

private function onDeactivate(e:Event):void
{
    this.addEventListener(Event.ACTIVATE, onActivate);
}

private function onActivate(e:Event):void
{
    this.removeEventListener(Event.ACTIVATE, onActivate);

    if(stage.deviceOrientation == StageOrientation.ROTATED_RIGHT)
        stage.setOrientation(StageOrientation.ROTATED_LEFT);
    else
        stage.setOrientation(StageOrientation.ROTATED_RIGHT);
}
0
যোগ

আমি এটা পুরানো থ্রেড অনুমান কিন্তু আমি নিজেকে এই সমস্যা একই ছিল এবং এই কি আমার জন্য সমস্যা সমাধান করলো। একটি অতিরিক্ত শ্রোতা কিছুটা অশোধিত কিন্তু এটি কাজ করে।

var default_orientation:String;
default_orientation=stage.orientation;

stage.addEventListener(Event.ENTER_FRAME,check_if_stage_is_rotated);

function check_if_stage_is_rotated(e:Event):void{
    if (stage){
        if(stage.orientation!=default_orientation){
            stage.setOrientation(default_orientation);
        }
    }

}
0
যোগ

আমার মোবাইল গেম অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি আড়াআড়ি মোডে থাকা উচিত, যখন আমি অ্যাপ্লিকেশনটি কমিয়ে আনতে পরে এটি ল্যাপটপ মোডে প্রদর্শিত হবে এবং পর্দাটি ঘোরানো হবে না, তবে সমস্যাটি উচ্চতা এবং প্রস্থকে বিনিময় করা হয়। তাই এটি পর্দার অর্ধেক দেখানো হয়েছে ফাঁকা পর্দা । যদি আমরা ডিভাইসটি লক এবং আনলক করি, স্বয়ংক্রিয়ভাবে উচ্চতা এবং প্রস্থ স্ক্রীন আকার অনুসারে উপযুক্ত হয়।

অ্যাপটি সক্রিয় থাকলে আমি Event.ACTIVATE ব্যবহার করে উপরের সমস্যাটি পরিচালনা করি তবে আমি প্রস্থ, উচ্চতা, স্কেলএক্স এবং স্কেল Y পুনরায় সেট করি। Android এর 4.0, 4.1, 4.2 সংস্করণগুলিতে এটি সূক্ষ্ম কাজ করছে তবে যখন আমরা 4.4, 5.1 ব্যবহার করি তখন এটি একই সমস্যা দেখাবে। কিভাবে আমরা এই সংশোধন করতে পারেন?

0
যোগ